// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , GammaAI , SouthAMAI , RussianAI , DifficultyC , def_gamma_ai , def_southam_ai , def_russian_ai , def_difficulty ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id , cSides ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 31
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 29
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 32
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 30
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 236
// begin Your_Side := 6 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 6
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
  70: LD_ADDR_EXP 31
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 0
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 0
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 2 , 1 , 4 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 29
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 2
 119: PUSH
 120: LD_INT 1
 122: PUSH
 123: LD_INT 4
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 2 , 3 , 1 , 2 , 3 , 0 , 0 ] ;
 148: LD_ADDR_EXP 32
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 2
 158: PUSH
 159: LD_INT 3
 161: PUSH
 162: LD_INT 1
 164: PUSH
 165: LD_INT 2
 167: PUSH
 168: LD_INT 3
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 ] , [ 2 ] , [ 3 ] , [ 4 ] , [ 5 ] , [ 6 ] ] ;
 187: LD_ADDR_EXP 30
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: EMPTY
 196: LIST
 197: PUSH
 198: LD_INT 2
 200: PUSH
 201: EMPTY
 202: LIST
 203: PUSH
 204: LD_INT 3
 206: PUSH
 207: EMPTY
 208: LIST
 209: PUSH
 210: LD_INT 4
 212: PUSH
 213: EMPTY
 214: LIST
 215: PUSH
 216: LD_INT 5
 218: PUSH
 219: EMPTY
 220: LIST
 221: PUSH
 222: LD_INT 6
 224: PUSH
 225: EMPTY
 226: LIST
 227: PUSH
 228: EMPTY
 229: LIST
 230: LIST
 231: LIST
 232: LIST
 233: LIST
 234: LIST
 235: ST_TO_ADDR
// end ; for i := 1 to 8 do
 236: LD_ADDR_VAR 0 2
 240: PUSH
 241: DOUBLE
 242: LD_INT 1
 244: DEC
 245: ST_TO_ADDR
 246: LD_INT 8
 248: PUSH
 249: FOR_TO
 250: IFFALSE 288
// if Multiplayer_GetPlayerIsSpec ( i ) then
 252: LD_VAR 0 2
 256: PPUSH
 257: CALL_OW 530
 261: IFFALSE 286
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 263: LD_ADDR_EXP 31
 267: PUSH
 268: LD_EXP 31
 272: PPUSH
 273: LD_VAR 0 2
 277: PPUSH
 278: LD_INT 0
 280: PPUSH
 281: CALL_OW 1
 285: ST_TO_ADDR
 286: GO 249
 288: POP
 289: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 290: LD_ADDR_EXP 34
 294: PUSH
 295: LD_INT 0
 297: PUSH
 298: LD_INT 0
 300: PUSH
 301: LD_INT 0
 303: PUSH
 304: LD_INT 0
 306: PUSH
 307: LD_INT 0
 309: PUSH
 310: LD_INT 0
 312: PUSH
 313: EMPTY
 314: LIST
 315: LIST
 316: LIST
 317: LIST
 318: LIST
 319: LIST
 320: ST_TO_ADDR
// for i := 1 to 8 do
 321: LD_ADDR_VAR 0 2
 325: PUSH
 326: DOUBLE
 327: LD_INT 1
 329: DEC
 330: ST_TO_ADDR
 331: LD_INT 8
 333: PUSH
 334: FOR_TO
 335: IFFALSE 382
// if Side_Positions [ i ] then
 337: LD_EXP 31
 341: PUSH
 342: LD_VAR 0 2
 346: ARRAY
 347: IFFALSE 380
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 349: LD_ADDR_EXP 34
 353: PUSH
 354: LD_EXP 34
 358: PPUSH
 359: LD_EXP 31
 363: PUSH
 364: LD_VAR 0 2
 368: ARRAY
 369: PPUSH
 370: LD_VAR 0 2
 374: PPUSH
 375: CALL_OW 1
 379: ST_TO_ADDR
 380: GO 334
 382: POP
 383: POP
// Team_Game := Side_Teams [ your_side ] ;
 384: LD_ADDR_EXP 33
 388: PUSH
 389: LD_EXP 29
 393: PUSH
 394: LD_OWVAR 2
 398: ARRAY
 399: ST_TO_ADDR
// cSides := Side_Positions ;
 400: LD_ADDR_EXP 43
 404: PUSH
 405: LD_EXP 31
 409: ST_TO_ADDR
// if Multiplayer then
 410: LD_OWVAR 4
 414: IFFALSE 574
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 416: LD_ADDR_EXP 1
 420: PUSH
 421: LD_INT 0
 423: PPUSH
 424: CALL_OW 426
 428: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 429: LD_ADDR_EXP 2
 433: PUSH
 434: LD_INT 1
 436: PPUSH
 437: CALL_OW 426
 441: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 442: LD_ADDR_EXP 3
 446: PUSH
 447: LD_INT 2
 449: PPUSH
 450: CALL_OW 426
 454: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 455: LD_ADDR_EXP 4
 459: PUSH
 460: LD_INT 3
 462: PPUSH
 463: CALL_OW 426
 467: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 468: LD_ADDR_EXP 5
 472: PUSH
 473: LD_INT 4
 475: PPUSH
 476: CALL_OW 426
 480: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 481: LD_ADDR_EXP 6
 485: PUSH
 486: LD_INT 10
 488: PPUSH
 489: CALL_OW 426
 493: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 494: LD_ADDR_EXP 7
 498: PUSH
 499: LD_INT 13
 501: PPUSH
 502: CALL_OW 426
 506: ST_TO_ADDR
// def_amount_of_apemen := GetMultiplayerSetting ( 14 ) ;
 507: LD_ADDR_EXP 8
 511: PUSH
 512: LD_INT 14
 514: PPUSH
 515: CALL_OW 426
 519: ST_TO_ADDR
// def_gamma_ai := GetMultiplayerSetting ( 15 ) ;
 520: LD_ADDR_EXP 25
 524: PUSH
 525: LD_INT 15
 527: PPUSH
 528: CALL_OW 426
 532: ST_TO_ADDR
// def_southam_ai := GetMultiplayerSetting ( 16 ) ;
 533: LD_ADDR_EXP 26
 537: PUSH
 538: LD_INT 16
 540: PPUSH
 541: CALL_OW 426
 545: ST_TO_ADDR
// def_russian_ai := GetMultiplayerSetting ( 17 ) ;
 546: LD_ADDR_EXP 27
 550: PUSH
 551: LD_INT 17
 553: PPUSH
 554: CALL_OW 426
 558: ST_TO_ADDR
// def_difficulty := GetMultiplayerSetting ( 18 ) ;
 559: LD_ADDR_EXP 28
 563: PUSH
 564: LD_INT 18
 566: PPUSH
 567: CALL_OW 426
 571: ST_TO_ADDR
// end else
 572: GO 658
// begin Randomize ;
 574: CALL_OW 10
// def_base_level := 1 ;
 578: LD_ADDR_EXP 1
 582: PUSH
 583: LD_INT 1
 585: ST_TO_ADDR
// def_amount_of_people := 1 ;
 586: LD_ADDR_EXP 2
 590: PUSH
 591: LD_INT 1
 593: ST_TO_ADDR
// def_skill_level := 4 ;
 594: LD_ADDR_EXP 3
 598: PUSH
 599: LD_INT 4
 601: ST_TO_ADDR
// def_starting_resources := 2 ;
 602: LD_ADDR_EXP 4
 606: PUSH
 607: LD_INT 2
 609: ST_TO_ADDR
// def_shipments_density := 1 ;
 610: LD_ADDR_EXP 5
 614: PUSH
 615: LD_INT 1
 617: ST_TO_ADDR
// def_shared_vision := 1 ;
 618: LD_ADDR_EXP 6
 622: PUSH
 623: LD_INT 1
 625: ST_TO_ADDR
// def_people_respawning := 2 ;
 626: LD_ADDR_EXP 7
 630: PUSH
 631: LD_INT 2
 633: ST_TO_ADDR
// def_russian_AI = 1 ;
 634: LD_ADDR_EXP 27
 638: PUSH
 639: LD_INT 1
 641: ST_TO_ADDR
// def_gamma_AI = 1 ;
 642: LD_ADDR_EXP 25
 646: PUSH
 647: LD_INT 1
 649: ST_TO_ADDR
// def_southam_AI = 1 ;
 650: LD_ADDR_EXP 26
 654: PUSH
 655: LD_INT 1
 657: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 1 ] [ def_base_level + 1 ] ;
 658: LD_ADDR_EXP 9
 662: PUSH
 663: LD_INT 0
 665: PUSH
 666: LD_INT 1
 668: PUSH
 669: LD_INT 1
 671: PUSH
 672: EMPTY
 673: LIST
 674: LIST
 675: LIST
 676: PUSH
 677: LD_EXP 1
 681: PUSH
 682: LD_INT 1
 684: PLUS
 685: ARRAY
 686: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 687: LD_ADDR_EXP 10
 691: PUSH
 692: LD_INT 0
 694: PUSH
 695: LD_INT 0
 697: PUSH
 698: LD_INT 2
 700: PUSH
 701: EMPTY
 702: LIST
 703: LIST
 704: LIST
 705: PUSH
 706: LD_EXP 1
 710: PUSH
 711: LD_INT 1
 713: PLUS
 714: ARRAY
 715: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 716: LD_ADDR_EXP 11
 720: PUSH
 721: LD_INT 9
 723: PUSH
 724: LD_INT 12
 726: PUSH
 727: LD_INT 15
 729: PUSH
 730: LD_INT 24
 732: PUSH
 733: EMPTY
 734: LIST
 735: LIST
 736: LIST
 737: LIST
 738: PUSH
 739: LD_EXP 2
 743: PUSH
 744: LD_INT 1
 746: PLUS
 747: ARRAY
 748: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 749: LD_ADDR_EXP 12
 753: PUSH
 754: LD_INT 3
 756: PUSH
 757: LD_INT 5
 759: PUSH
 760: LD_INT 6
 762: PUSH
 763: LD_INT 7
 765: PUSH
 766: EMPTY
 767: LIST
 768: LIST
 769: LIST
 770: LIST
 771: PUSH
 772: LD_EXP 3
 776: PUSH
 777: LD_INT 1
 779: PLUS
 780: ARRAY
 781: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 30 , 0 ] , [ 50 , 50 , 0 ] , [ 80 , 60 , 0 ] ] [ def_starting_resources + 1 ] ;
 782: LD_ADDR_EXP 14
 786: PUSH
 787: LD_INT 0
 789: PUSH
 790: LD_INT 0
 792: PUSH
 793: LD_INT 0
 795: PUSH
 796: EMPTY
 797: LIST
 798: LIST
 799: LIST
 800: PUSH
 801: LD_INT 30
 803: PUSH
 804: LD_INT 30
 806: PUSH
 807: LD_INT 0
 809: PUSH
 810: EMPTY
 811: LIST
 812: LIST
 813: LIST
 814: PUSH
 815: LD_INT 50
 817: PUSH
 818: LD_INT 50
 820: PUSH
 821: LD_INT 0
 823: PUSH
 824: EMPTY
 825: LIST
 826: LIST
 827: LIST
 828: PUSH
 829: LD_INT 80
 831: PUSH
 832: LD_INT 60
 834: PUSH
 835: LD_INT 0
 837: PUSH
 838: EMPTY
 839: LIST
 840: LIST
 841: LIST
 842: PUSH
 843: EMPTY
 844: LIST
 845: LIST
 846: LIST
 847: LIST
 848: PUSH
 849: LD_EXP 4
 853: PUSH
 854: LD_INT 1
 856: PLUS
 857: ARRAY
 858: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 859: LD_ADDR_EXP 13
 863: PUSH
 864: LD_INT 10
 866: PUSH
 867: EMPTY
 868: LIST
 869: PUSH
 870: LD_INT 7
 872: PUSH
 873: LD_INT 14
 875: PUSH
 876: EMPTY
 877: LIST
 878: LIST
 879: PUSH
 880: LD_INT 6
 882: PUSH
 883: LD_INT 12
 885: PUSH
 886: LD_INT 18
 888: PUSH
 889: EMPTY
 890: LIST
 891: LIST
 892: LIST
 893: PUSH
 894: LD_INT 5
 896: PUSH
 897: LD_INT 10
 899: PUSH
 900: LD_INT 15
 902: PUSH
 903: LD_INT 20
 905: PUSH
 906: EMPTY
 907: LIST
 908: LIST
 909: LIST
 910: LIST
 911: PUSH
 912: EMPTY
 913: LIST
 914: LIST
 915: LIST
 916: LIST
 917: PUSH
 918: LD_EXP 4
 922: PUSH
 923: LD_INT 1
 925: PLUS
 926: ARRAY
 927: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 928: LD_ADDR_EXP 15
 932: PUSH
 933: LD_INT 150
 935: PUSH
 936: LD_INT 125
 938: PUSH
 939: LD_INT 100
 941: PUSH
 942: LD_INT 50
 944: PUSH
 945: EMPTY
 946: LIST
 947: LIST
 948: LIST
 949: LIST
 950: PUSH
 951: LD_EXP 5
 955: PUSH
 956: LD_INT 1
 958: PLUS
 959: ARRAY
 960: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 5 5$00 , 3 3$0 ] [ def_people_respawning + 1 ] ;
 961: LD_ADDR_EXP 19
 965: PUSH
 966: LD_INT 0
 968: PUSH
 969: LD_INT 10500
 971: PUSH
 972: LD_INT 6300
 974: PUSH
 975: EMPTY
 976: LIST
 977: LIST
 978: LIST
 979: PUSH
 980: LD_EXP 7
 984: PUSH
 985: LD_INT 1
 987: PLUS
 988: ARRAY
 989: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 15 15$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
 990: LD_ADDR_EXP 20
 994: PUSH
 995: LD_INT 0
 997: PUSH
 998: LD_INT 31500
1000: PUSH
1001: LD_INT 10500
1003: PUSH
1004: EMPTY
1005: LIST
1006: LIST
1007: LIST
1008: PUSH
1009: LD_EXP 7
1013: PUSH
1014: LD_INT 1
1016: PLUS
1017: ARRAY
1018: ST_TO_ADDR
// amount_of_apemen := [ 0 , 3 , 6 , 9 ] [ def_amount_of_apemen + 1 ] ;
1019: LD_ADDR_EXP 17
1023: PUSH
1024: LD_INT 0
1026: PUSH
1027: LD_INT 3
1029: PUSH
1030: LD_INT 6
1032: PUSH
1033: LD_INT 9
1035: PUSH
1036: EMPTY
1037: LIST
1038: LIST
1039: LIST
1040: LIST
1041: PUSH
1042: LD_EXP 8
1046: PUSH
1047: LD_INT 1
1049: PLUS
1050: ARRAY
1051: ST_TO_ADDR
// GammaAI := [ 0 , 1 ] [ def_gamma_ai + 1 ] ;
1052: LD_ADDR_EXP 21
1056: PUSH
1057: LD_INT 0
1059: PUSH
1060: LD_INT 1
1062: PUSH
1063: EMPTY
1064: LIST
1065: LIST
1066: PUSH
1067: LD_EXP 25
1071: PUSH
1072: LD_INT 1
1074: PLUS
1075: ARRAY
1076: ST_TO_ADDR
// SouthAMAI := [ 0 , 1 ] [ def_southam_ai + 1 ] ;
1077: LD_ADDR_EXP 22
1081: PUSH
1082: LD_INT 0
1084: PUSH
1085: LD_INT 1
1087: PUSH
1088: EMPTY
1089: LIST
1090: LIST
1091: PUSH
1092: LD_EXP 26
1096: PUSH
1097: LD_INT 1
1099: PLUS
1100: ARRAY
1101: ST_TO_ADDR
// RussianAI := [ 0 , 1 ] [ def_russian_ai + 1 ] ;
1102: LD_ADDR_EXP 23
1106: PUSH
1107: LD_INT 0
1109: PUSH
1110: LD_INT 1
1112: PUSH
1113: EMPTY
1114: LIST
1115: LIST
1116: PUSH
1117: LD_EXP 27
1121: PUSH
1122: LD_INT 1
1124: PLUS
1125: ARRAY
1126: ST_TO_ADDR
// difficultyC := [ 3 , 5 , 7 , 9 ] [ def_difficulty + 1 ] ;
1127: LD_ADDR_EXP 24
1131: PUSH
1132: LD_INT 3
1134: PUSH
1135: LD_INT 5
1137: PUSH
1138: LD_INT 7
1140: PUSH
1141: LD_INT 9
1143: PUSH
1144: EMPTY
1145: LIST
1146: LIST
1147: LIST
1148: LIST
1149: PUSH
1150: LD_EXP 28
1154: PUSH
1155: LD_INT 1
1157: PLUS
1158: ARRAY
1159: ST_TO_ADDR
// end ;
1160: LD_VAR 0 1
1164: RET
// function init_map ; var i , j ; begin
1165: LD_INT 0
1167: PPUSH
1168: PPUSH
1169: PPUSH
// CreateDepositXY ( 38 , 3 , mat_oil ) ;
1170: LD_INT 38
1172: PPUSH
1173: LD_INT 3
1175: PPUSH
1176: LD_INT 2
1178: PPUSH
1179: CALL_OW 62
// CreateDepositXY ( 71 , 5 , mat_oil ) ;
1183: LD_INT 71
1185: PPUSH
1186: LD_INT 5
1188: PPUSH
1189: LD_INT 2
1191: PPUSH
1192: CALL_OW 62
// CreateDepositXY ( 32 , 53 , mat_oil ) ;
1196: LD_INT 32
1198: PPUSH
1199: LD_INT 53
1201: PPUSH
1202: LD_INT 2
1204: PPUSH
1205: CALL_OW 62
// CreateDepositXY ( 42 , 54 , mat_oil ) ;
1209: LD_INT 42
1211: PPUSH
1212: LD_INT 54
1214: PPUSH
1215: LD_INT 2
1217: PPUSH
1218: CALL_OW 62
// CreateDepositXY ( 100 , 96 , mat_oil ) ;
1222: LD_INT 100
1224: PPUSH
1225: LD_INT 96
1227: PPUSH
1228: LD_INT 2
1230: PPUSH
1231: CALL_OW 62
// CreateDepositXY ( 106 , 97 , mat_oil ) ;
1235: LD_INT 106
1237: PPUSH
1238: LD_INT 97
1240: PPUSH
1241: LD_INT 2
1243: PPUSH
1244: CALL_OW 62
// depot_def := [ [ 49 , 9 , 3 ] , [ 31 , 48 , 0 ] , [ 94 , 95 , 5 ] ] ;
1248: LD_ADDR_EXP 35
1252: PUSH
1253: LD_INT 49
1255: PUSH
1256: LD_INT 9
1258: PUSH
1259: LD_INT 3
1261: PUSH
1262: EMPTY
1263: LIST
1264: LIST
1265: LIST
1266: PUSH
1267: LD_INT 31
1269: PUSH
1270: LD_INT 48
1272: PUSH
1273: LD_INT 0
1275: PUSH
1276: EMPTY
1277: LIST
1278: LIST
1279: LIST
1280: PUSH
1281: LD_INT 94
1283: PUSH
1284: LD_INT 95
1286: PUSH
1287: LD_INT 5
1289: PUSH
1290: EMPTY
1291: LIST
1292: LIST
1293: LIST
1294: PUSH
1295: EMPTY
1296: LIST
1297: LIST
1298: LIST
1299: ST_TO_ADDR
// for i in depot_def do
1300: LD_ADDR_VAR 0 2
1304: PUSH
1305: LD_EXP 35
1309: PUSH
1310: FOR_IN
1311: IFFALSE 1385
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1313: LD_ADDR_EXP 37
1317: PUSH
1318: LD_EXP 37
1322: PUSH
1323: LD_VAR 0 2
1327: PUSH
1328: LD_INT 1
1330: ARRAY
1331: PPUSH
1332: LD_VAR 0 2
1336: PUSH
1337: LD_INT 3
1339: ARRAY
1340: PPUSH
1341: LD_INT 10
1343: PPUSH
1344: CALL_OW 272
1348: PUSH
1349: LD_VAR 0 2
1353: PUSH
1354: LD_INT 2
1356: ARRAY
1357: PPUSH
1358: LD_VAR 0 2
1362: PUSH
1363: LD_INT 3
1365: ARRAY
1366: PPUSH
1367: LD_INT 10
1369: PPUSH
1370: CALL_OW 273
1374: PUSH
1375: EMPTY
1376: LIST
1377: LIST
1378: PUSH
1379: EMPTY
1380: LIST
1381: ADD
1382: ST_TO_ADDR
1383: GO 1310
1385: POP
1386: POP
// breastworks_def := [ [ [ 57 , 29 , 5 ] , [ 60 , 24 , 5 ] ] , [ [ 51 , 56 , 5 ] , [ 53 , 52 , 5 ] ] , [ [ 80 , 82 , 2 ] , [ 90 , 81 , 3 ] ] , ] ;
1387: LD_ADDR_EXP 36
1391: PUSH
1392: LD_INT 57
1394: PUSH
1395: LD_INT 29
1397: PUSH
1398: LD_INT 5
1400: PUSH
1401: EMPTY
1402: LIST
1403: LIST
1404: LIST
1405: PUSH
1406: LD_INT 60
1408: PUSH
1409: LD_INT 24
1411: PUSH
1412: LD_INT 5
1414: PUSH
1415: EMPTY
1416: LIST
1417: LIST
1418: LIST
1419: PUSH
1420: EMPTY
1421: LIST
1422: LIST
1423: PUSH
1424: LD_INT 51
1426: PUSH
1427: LD_INT 56
1429: PUSH
1430: LD_INT 5
1432: PUSH
1433: EMPTY
1434: LIST
1435: LIST
1436: LIST
1437: PUSH
1438: LD_INT 53
1440: PUSH
1441: LD_INT 52
1443: PUSH
1444: LD_INT 5
1446: PUSH
1447: EMPTY
1448: LIST
1449: LIST
1450: LIST
1451: PUSH
1452: EMPTY
1453: LIST
1454: LIST
1455: PUSH
1456: LD_INT 80
1458: PUSH
1459: LD_INT 82
1461: PUSH
1462: LD_INT 2
1464: PUSH
1465: EMPTY
1466: LIST
1467: LIST
1468: LIST
1469: PUSH
1470: LD_INT 90
1472: PUSH
1473: LD_INT 81
1475: PUSH
1476: LD_INT 3
1478: PUSH
1479: EMPTY
1480: LIST
1481: LIST
1482: LIST
1483: PUSH
1484: EMPTY
1485: LIST
1486: LIST
1487: PUSH
1488: EMPTY
1489: LIST
1490: LIST
1491: LIST
1492: ST_TO_ADDR
// end ;
1493: LD_VAR 0 1
1497: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1498: LD_INT 0
1500: PPUSH
1501: PPUSH
1502: PPUSH
// if not Team_Game then
1503: LD_EXP 33
1507: NOT
1508: IFFALSE 1606
// begin for i = 1 to 8 do
1510: LD_ADDR_VAR 0 2
1514: PUSH
1515: DOUBLE
1516: LD_INT 1
1518: DEC
1519: ST_TO_ADDR
1520: LD_INT 8
1522: PUSH
1523: FOR_TO
1524: IFFALSE 1602
// for j = 1 to 8 do
1526: LD_ADDR_VAR 0 3
1530: PUSH
1531: DOUBLE
1532: LD_INT 1
1534: DEC
1535: ST_TO_ADDR
1536: LD_INT 8
1538: PUSH
1539: FOR_TO
1540: IFFALSE 1598
// if i <> j then
1542: LD_VAR 0 2
1546: PUSH
1547: LD_VAR 0 3
1551: NONEQUAL
1552: IFFALSE 1576
// SetAttitude ( i , j , att_neutral , true ) else
1554: LD_VAR 0 2
1558: PPUSH
1559: LD_VAR 0 3
1563: PPUSH
1564: LD_INT 0
1566: PPUSH
1567: LD_INT 1
1569: PPUSH
1570: CALL_OW 80
1574: GO 1596
// SetAttitude ( i , j , att_friend , true ) ;
1576: LD_VAR 0 2
1580: PPUSH
1581: LD_VAR 0 3
1585: PPUSH
1586: LD_INT 1
1588: PPUSH
1589: LD_INT 1
1591: PPUSH
1592: CALL_OW 80
1596: GO 1539
1598: POP
1599: POP
1600: GO 1523
1602: POP
1603: POP
// end else
1604: GO 1781
// begin if def_shared_vision then
1606: LD_EXP 6
1610: IFFALSE 1675
// begin for i in Teams do
1612: LD_ADDR_VAR 0 2
1616: PUSH
1617: LD_EXP 30
1621: PUSH
1622: FOR_IN
1623: IFFALSE 1673
// for j = 2 to i do
1625: LD_ADDR_VAR 0 3
1629: PUSH
1630: DOUBLE
1631: LD_INT 2
1633: DEC
1634: ST_TO_ADDR
1635: LD_VAR 0 2
1639: PUSH
1640: FOR_TO
1641: IFFALSE 1669
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1643: LD_VAR 0 2
1647: PUSH
1648: LD_VAR 0 3
1652: ARRAY
1653: PPUSH
1654: LD_VAR 0 2
1658: PUSH
1659: LD_INT 1
1661: ARRAY
1662: PPUSH
1663: CALL_OW 343
1667: GO 1640
1669: POP
1670: POP
1671: GO 1622
1673: POP
1674: POP
// end ; for i = 1 to 8 do
1675: LD_ADDR_VAR 0 2
1679: PUSH
1680: DOUBLE
1681: LD_INT 1
1683: DEC
1684: ST_TO_ADDR
1685: LD_INT 8
1687: PUSH
1688: FOR_TO
1689: IFFALSE 1779
// for j = 1 to 8 do
1691: LD_ADDR_VAR 0 3
1695: PUSH
1696: DOUBLE
1697: LD_INT 1
1699: DEC
1700: ST_TO_ADDR
1701: LD_INT 8
1703: PUSH
1704: FOR_TO
1705: IFFALSE 1775
// if Side_Teams [ i ] = Side_Teams [ j ] then
1707: LD_EXP 29
1711: PUSH
1712: LD_VAR 0 2
1716: ARRAY
1717: PUSH
1718: LD_EXP 29
1722: PUSH
1723: LD_VAR 0 3
1727: ARRAY
1728: EQUAL
1729: IFFALSE 1753
// SetAttitude ( i , j , att_friend , true ) else
1731: LD_VAR 0 2
1735: PPUSH
1736: LD_VAR 0 3
1740: PPUSH
1741: LD_INT 1
1743: PPUSH
1744: LD_INT 1
1746: PPUSH
1747: CALL_OW 80
1751: GO 1773
// SetAttitude ( i , j , att_enemy , true ) ;
1753: LD_VAR 0 2
1757: PPUSH
1758: LD_VAR 0 3
1762: PPUSH
1763: LD_INT 2
1765: PPUSH
1766: LD_INT 1
1768: PPUSH
1769: CALL_OW 80
1773: GO 1704
1775: POP
1776: POP
1777: GO 1688
1779: POP
1780: POP
// end ; end ;
1781: LD_VAR 0 1
1785: RET
// function gall ; var gal ; begin
1786: LD_INT 0
1788: PPUSH
1789: PPUSH
// gal := [ [ us , 5 , sex_male , Macmillan ] , [ us , 19 , sex_male , Sikorski ] , [ ru , 10 , sex_male , Popov ] ] ;
1790: LD_ADDR_VAR 0 2
1794: PUSH
1795: LD_STRING us
1797: PUSH
1798: LD_INT 5
1800: PUSH
1801: LD_INT 1
1803: PUSH
1804: LD_STRING Macmillan
1806: PUSH
1807: EMPTY
1808: LIST
1809: LIST
1810: LIST
1811: LIST
1812: PUSH
1813: LD_STRING us
1815: PUSH
1816: LD_INT 19
1818: PUSH
1819: LD_INT 1
1821: PUSH
1822: LD_STRING Sikorski
1824: PUSH
1825: EMPTY
1826: LIST
1827: LIST
1828: LIST
1829: LIST
1830: PUSH
1831: LD_STRING ru
1833: PUSH
1834: LD_INT 10
1836: PUSH
1837: LD_INT 1
1839: PUSH
1840: LD_STRING Popov
1842: PUSH
1843: EMPTY
1844: LIST
1845: LIST
1846: LIST
1847: LIST
1848: PUSH
1849: EMPTY
1850: LIST
1851: LIST
1852: LIST
1853: ST_TO_ADDR
// result := gal ;
1854: LD_ADDR_VAR 0 1
1858: PUSH
1859: LD_VAR 0 2
1863: ST_TO_ADDR
// end ;
1864: LD_VAR 0 1
1868: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un , k , c ; begin
1869: LD_INT 0
1871: PPUSH
1872: PPUSH
1873: PPUSH
1874: PPUSH
1875: PPUSH
1876: PPUSH
// result := [ ] ;
1877: LD_ADDR_VAR 0 6
1881: PUSH
1882: EMPTY
1883: ST_TO_ADDR
// for i := 1 to count do
1884: LD_ADDR_VAR 0 7
1888: PUSH
1889: DOUBLE
1890: LD_INT 1
1892: DEC
1893: ST_TO_ADDR
1894: LD_VAR 0 1
1898: PUSH
1899: FOR_TO
1900: IFFALSE 2407
// begin uc_direction := Rand ( 0 , 5 ) ;
1902: LD_ADDR_OWVAR 24
1906: PUSH
1907: LD_INT 0
1909: PPUSH
1910: LD_INT 5
1912: PPUSH
1913: CALL_OW 12
1917: ST_TO_ADDR
// if commander then
1918: LD_LOC 1
1922: IFFALSE 2134
// begin commander := false ;
1924: LD_ADDR_LOC 1
1928: PUSH
1929: LD_INT 0
1931: ST_TO_ADDR
// if Multiplayer then
1932: LD_OWVAR 4
1936: IFFALSE 2132
// begin for c = 1 to 8 do
1938: LD_ADDR_VAR 0 11
1942: PUSH
1943: DOUBLE
1944: LD_INT 1
1946: DEC
1947: ST_TO_ADDR
1948: LD_INT 8
1950: PUSH
1951: FOR_TO
1952: IFFALSE 2130
// begin if cSides [ c ] > 0 then
1954: LD_EXP 43
1958: PUSH
1959: LD_VAR 0 11
1963: ARRAY
1964: PUSH
1965: LD_INT 0
1967: GREATER
1968: IFFALSE 2128
// begin k := cSides [ c ] ;
1970: LD_ADDR_VAR 0 10
1974: PUSH
1975: LD_EXP 43
1979: PUSH
1980: LD_VAR 0 11
1984: ARRAY
1985: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1986: LD_INT 1
1988: PPUSH
1989: LD_INT 2
1991: PPUSH
1992: CALL_OW 12
1996: PPUSH
1997: LD_VAR 0 2
2001: PPUSH
2002: LD_EXP 12
2006: PUSH
2007: LD_INT 2
2009: PLUS
2010: PPUSH
2011: CALL_OW 380
// hc_gallery := gall [ k ] [ 1 ] ;
2015: LD_ADDR_OWVAR 33
2019: PUSH
2020: CALL 1786 0 0
2024: PUSH
2025: LD_VAR 0 10
2029: ARRAY
2030: PUSH
2031: LD_INT 1
2033: ARRAY
2034: ST_TO_ADDR
// hc_face_number := gall [ k ] [ 2 ] ;
2035: LD_ADDR_OWVAR 34
2039: PUSH
2040: CALL 1786 0 0
2044: PUSH
2045: LD_VAR 0 10
2049: ARRAY
2050: PUSH
2051: LD_INT 2
2053: ARRAY
2054: ST_TO_ADDR
// hc_sex := gall [ k ] [ 3 ] ;
2055: LD_ADDR_OWVAR 27
2059: PUSH
2060: CALL 1786 0 0
2064: PUSH
2065: LD_VAR 0 10
2069: ARRAY
2070: PUSH
2071: LD_INT 3
2073: ARRAY
2074: ST_TO_ADDR
// hc_name := gall [ k ] [ 4 ] ;
2075: LD_ADDR_OWVAR 26
2079: PUSH
2080: CALL 1786 0 0
2084: PUSH
2085: LD_VAR 0 10
2089: ARRAY
2090: PUSH
2091: LD_INT 4
2093: ARRAY
2094: ST_TO_ADDR
// hc_importance := 105 ;
2095: LD_ADDR_OWVAR 32
2099: PUSH
2100: LD_INT 105
2102: ST_TO_ADDR
// cSides := Replace ( cSides , c , 0 ) ;
2103: LD_ADDR_EXP 43
2107: PUSH
2108: LD_EXP 43
2112: PPUSH
2113: LD_VAR 0 11
2117: PPUSH
2118: LD_INT 0
2120: PPUSH
2121: CALL_OW 1
2125: ST_TO_ADDR
// break ;
2126: GO 2130
// end ; end ;
2128: GO 1951
2130: POP
2131: POP
// end ; end else
2132: GO 2205
// begin hc_gallery :=  ;
2134: LD_ADDR_OWVAR 33
2138: PUSH
2139: LD_STRING 
2141: ST_TO_ADDR
// hc_name :=  ;
2142: LD_ADDR_OWVAR 26
2146: PUSH
2147: LD_STRING 
2149: ST_TO_ADDR
// hc_importance := 0 ;
2150: LD_ADDR_OWVAR 32
2154: PUSH
2155: LD_INT 0
2157: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
2158: LD_INT 1
2160: PPUSH
2161: LD_INT 2
2163: PPUSH
2164: CALL_OW 12
2168: PPUSH
2169: LD_VAR 0 2
2173: PPUSH
2174: LD_EXP 12
2178: PPUSH
2179: CALL_OW 380
// if Multiplayer then
2183: LD_OWVAR 4
2187: IFFALSE 2205
// begin hc_gallery :=  ;
2189: LD_ADDR_OWVAR 33
2193: PUSH
2194: LD_STRING 
2196: ST_TO_ADDR
// hc_face_number := 0 ;
2197: LD_ADDR_OWVAR 34
2201: PUSH
2202: LD_INT 0
2204: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
2205: LD_ADDR_VAR 0 9
2209: PUSH
2210: CALL_OW 44
2214: ST_TO_ADDR
// if global_defined then
2215: LD_LOC 3
2219: IFFALSE 2359
// begin if ( cl = class_soldier ) then
2221: LD_VAR 0 2
2225: PUSH
2226: LD_INT 1
2228: EQUAL
2229: IFFALSE 2249
// j := i + soldiers_created else
2231: LD_ADDR_VAR 0 8
2235: PUSH
2236: LD_VAR 0 7
2240: PUSH
2241: LD_LOC 4
2245: PLUS
2246: ST_TO_ADDR
2247: GO 2259
// j := i ;
2249: LD_ADDR_VAR 0 8
2253: PUSH
2254: LD_VAR 0 7
2258: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
2259: LD_LOC 2
2263: PUSH
2264: LD_VAR 0 2
2268: ARRAY
2269: PUSH
2270: LD_VAR 0 8
2274: ARRAY
2275: PPUSH
2276: LD_VAR 0 9
2280: PPUSH
2281: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
2285: LD_VAR 0 9
2289: PPUSH
2290: LD_INT 2
2292: PPUSH
2293: LD_LOC 2
2297: PUSH
2298: LD_VAR 0 2
2302: ARRAY
2303: PUSH
2304: LD_VAR 0 8
2308: ARRAY
2309: PPUSH
2310: LD_INT 2
2312: PPUSH
2313: CALL_OW 260
2317: PPUSH
2318: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
2322: LD_VAR 0 9
2326: PPUSH
2327: LD_INT 1
2329: PPUSH
2330: LD_LOC 2
2334: PUSH
2335: LD_VAR 0 2
2339: ARRAY
2340: PUSH
2341: LD_VAR 0 8
2345: ARRAY
2346: PPUSH
2347: LD_INT 1
2349: PPUSH
2350: CALL_OW 260
2354: PPUSH
2355: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2359: LD_VAR 0 9
2363: PPUSH
2364: LD_VAR 0 3
2368: PPUSH
2369: LD_VAR 0 4
2373: PPUSH
2374: LD_VAR 0 5
2378: PPUSH
2379: LD_INT 0
2381: PPUSH
2382: CALL_OW 50
// result := result ^ [ un ] ;
2386: LD_ADDR_VAR 0 6
2390: PUSH
2391: LD_VAR 0 6
2395: PUSH
2396: LD_VAR 0 9
2400: PUSH
2401: EMPTY
2402: LIST
2403: ADD
2404: ST_TO_ADDR
// end ;
2405: GO 1899
2407: POP
2408: POP
// if not global_defined then
2409: LD_LOC 3
2413: NOT
2414: IFFALSE 2492
// if ( global_units >= cl ) then
2416: LD_LOC 2
2420: PUSH
2421: LD_VAR 0 2
2425: GREATEREQUAL
2426: IFFALSE 2467
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
2428: LD_ADDR_LOC 2
2432: PUSH
2433: LD_LOC 2
2437: PPUSH
2438: LD_VAR 0 2
2442: PPUSH
2443: LD_LOC 2
2447: PUSH
2448: LD_VAR 0 2
2452: ARRAY
2453: PUSH
2454: LD_VAR 0 6
2458: ADD
2459: PPUSH
2460: CALL_OW 1
2464: ST_TO_ADDR
2465: GO 2492
// global_units := Replace ( global_units , cl , result ) ;
2467: LD_ADDR_LOC 2
2471: PUSH
2472: LD_LOC 2
2476: PPUSH
2477: LD_VAR 0 2
2481: PPUSH
2482: LD_VAR 0 6
2486: PPUSH
2487: CALL_OW 1
2491: ST_TO_ADDR
// end ;
2492: LD_VAR 0 6
2496: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
2497: LD_INT 0
2499: PPUSH
2500: PPUSH
2501: PPUSH
2502: PPUSH
2503: PPUSH
2504: PPUSH
2505: PPUSH
2506: PPUSH
2507: PPUSH
2508: PPUSH
// pos := Side_Positions [ side ] ;
2509: LD_ADDR_VAR 0 3
2513: PUSH
2514: LD_EXP 31
2518: PUSH
2519: LD_VAR 0 1
2523: ARRAY
2524: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2525: LD_ADDR_OWVAR 21
2529: PUSH
2530: LD_EXP 32
2534: PUSH
2535: LD_VAR 0 1
2539: ARRAY
2540: ST_TO_ADDR
// uc_side := side ;
2541: LD_ADDR_OWVAR 20
2545: PUSH
2546: LD_VAR 0 1
2550: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2551: LD_ADDR_VAR 0 4
2555: PUSH
2556: LD_EXP 35
2560: PUSH
2561: LD_VAR 0 3
2565: ARRAY
2566: PUSH
2567: LD_INT 1
2569: ARRAY
2570: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2571: LD_ADDR_VAR 0 5
2575: PUSH
2576: LD_EXP 35
2580: PUSH
2581: LD_VAR 0 3
2585: ARRAY
2586: PUSH
2587: LD_INT 2
2589: ARRAY
2590: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2591: LD_ADDR_VAR 0 6
2595: PUSH
2596: LD_EXP 35
2600: PUSH
2601: LD_VAR 0 3
2605: ARRAY
2606: PUSH
2607: LD_INT 3
2609: ARRAY
2610: ST_TO_ADDR
// if is_depot then
2611: LD_EXP 9
2615: IFFALSE 2722
// begin bc_type = b_depot ;
2617: LD_ADDR_OWVAR 42
2621: PUSH
2622: LD_INT 0
2624: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2625: LD_ADDR_VAR 0 11
2629: PUSH
2630: LD_VAR 0 4
2634: PPUSH
2635: LD_VAR 0 5
2639: PPUSH
2640: LD_VAR 0 6
2644: PPUSH
2645: CALL_OW 47
2649: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2650: LD_VAR 0 11
2654: PPUSH
2655: LD_STRING @
2657: PUSH
2658: LD_VAR 0 1
2662: STR
2663: PPUSH
2664: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2668: LD_VAR 0 11
2672: PPUSH
2673: CALL_OW 274
2677: PPUSH
2678: LD_INT 1
2680: PPUSH
2681: LD_EXP 14
2685: PUSH
2686: LD_INT 1
2688: ARRAY
2689: PPUSH
2690: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2694: LD_VAR 0 11
2698: PPUSH
2699: CALL_OW 274
2703: PPUSH
2704: LD_INT 2
2706: PPUSH
2707: LD_EXP 14
2711: PUSH
2712: LD_INT 2
2714: ARRAY
2715: PPUSH
2716: CALL_OW 277
// end else
2720: GO 2866
// begin for i := 1 to 3 do
2722: LD_ADDR_VAR 0 7
2726: PUSH
2727: DOUBLE
2728: LD_INT 1
2730: DEC
2731: ST_TO_ADDR
2732: LD_INT 3
2734: PUSH
2735: FOR_TO
2736: IFFALSE 2864
// begin r := starting_resources [ i ] ;
2738: LD_ADDR_VAR 0 8
2742: PUSH
2743: LD_EXP 14
2747: PUSH
2748: LD_VAR 0 7
2752: ARRAY
2753: ST_TO_ADDR
// while r >= 10 do
2754: LD_VAR 0 8
2758: PUSH
2759: LD_INT 10
2761: GREATEREQUAL
2762: IFFALSE 2862
// if r > 50 then
2764: LD_VAR 0 8
2768: PUSH
2769: LD_INT 50
2771: GREATER
2772: IFFALSE 2818
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2774: LD_VAR 0 7
2778: PPUSH
2779: LD_INT 5
2781: PPUSH
2782: LD_VAR 0 4
2786: PPUSH
2787: LD_VAR 0 5
2791: PPUSH
2792: LD_INT 4
2794: PPUSH
2795: LD_INT 0
2797: PPUSH
2798: CALL_OW 60
// r := r - 50 ;
2802: LD_ADDR_VAR 0 8
2806: PUSH
2807: LD_VAR 0 8
2811: PUSH
2812: LD_INT 50
2814: MINUS
2815: ST_TO_ADDR
// end else
2816: GO 2860
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2818: LD_VAR 0 7
2822: PPUSH
2823: LD_VAR 0 8
2827: PUSH
2828: LD_INT 10
2830: DIV
2831: PPUSH
2832: LD_VAR 0 4
2836: PPUSH
2837: LD_VAR 0 5
2841: PPUSH
2842: LD_INT 4
2844: PPUSH
2845: LD_INT 0
2847: PPUSH
2848: CALL_OW 60
// r := 0 ;
2852: LD_ADDR_VAR 0 8
2856: PUSH
2857: LD_INT 0
2859: ST_TO_ADDR
// end ;
2860: GO 2754
// end ;
2862: GO 2735
2864: POP
2865: POP
// end ; for r in starting_crates do
2866: LD_ADDR_VAR 0 8
2870: PUSH
2871: LD_EXP 13
2875: PUSH
2876: FOR_IN
2877: IFFALSE 2909
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2879: LD_INT 1
2881: PPUSH
2882: LD_INT 5
2884: PPUSH
2885: LD_VAR 0 4
2889: PPUSH
2890: LD_VAR 0 5
2894: PPUSH
2895: LD_VAR 0 8
2899: PPUSH
2900: LD_INT 0
2902: PPUSH
2903: CALL_OW 60
2907: GO 2876
2909: POP
2910: POP
// commander := true ;
2911: LD_ADDR_LOC 1
2915: PUSH
2916: LD_INT 1
2918: ST_TO_ADDR
// soldiers_created := 0 ;
2919: LD_ADDR_LOC 4
2923: PUSH
2924: LD_INT 0
2926: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
2927: LD_ADDR_VAR 0 7
2931: PUSH
2932: DOUBLE
2933: LD_INT 1
2935: DEC
2936: ST_TO_ADDR
2937: LD_EXP 10
2941: PUSH
2942: FOR_TO
2943: IFFALSE 3165
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
2945: LD_ADDR_VAR 0 4
2949: PUSH
2950: LD_EXP 36
2954: PUSH
2955: LD_VAR 0 3
2959: ARRAY
2960: PUSH
2961: LD_VAR 0 7
2965: ARRAY
2966: PUSH
2967: LD_INT 1
2969: ARRAY
2970: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
2971: LD_ADDR_VAR 0 5
2975: PUSH
2976: LD_EXP 36
2980: PUSH
2981: LD_VAR 0 3
2985: ARRAY
2986: PUSH
2987: LD_VAR 0 7
2991: ARRAY
2992: PUSH
2993: LD_INT 2
2995: ARRAY
2996: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
2997: LD_ADDR_VAR 0 6
3001: PUSH
3002: LD_EXP 36
3006: PUSH
3007: LD_VAR 0 3
3011: ARRAY
3012: PUSH
3013: LD_VAR 0 7
3017: ARRAY
3018: PUSH
3019: LD_INT 3
3021: ARRAY
3022: ST_TO_ADDR
// bc_type := b_breastwork ;
3023: LD_ADDR_OWVAR 42
3027: PUSH
3028: LD_INT 31
3030: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
3031: LD_ADDR_VAR 0 10
3035: PUSH
3036: LD_VAR 0 4
3040: PPUSH
3041: LD_VAR 0 5
3045: PPUSH
3046: LD_VAR 0 6
3050: PPUSH
3051: CALL_OW 47
3055: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
3056: LD_ADDR_VAR 0 4
3060: PUSH
3061: LD_VAR 0 4
3065: PPUSH
3066: LD_VAR 0 6
3070: PPUSH
3071: LD_INT 2
3073: PPUSH
3074: CALL_OW 272
3078: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
3079: LD_ADDR_VAR 0 5
3083: PUSH
3084: LD_VAR 0 5
3088: PPUSH
3089: LD_VAR 0 6
3093: PPUSH
3094: LD_INT 2
3096: PPUSH
3097: CALL_OW 273
3101: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
3102: LD_ADDR_VAR 0 9
3106: PUSH
3107: LD_INT 1
3109: PPUSH
3110: LD_INT 1
3112: PPUSH
3113: LD_VAR 0 4
3117: PPUSH
3118: LD_VAR 0 5
3122: PPUSH
3123: LD_INT 0
3125: PPUSH
3126: CALL 1869 0 5
3130: PUSH
3131: LD_INT 1
3133: ARRAY
3134: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
3135: LD_ADDR_LOC 4
3139: PUSH
3140: LD_LOC 4
3144: PUSH
3145: LD_INT 1
3147: PLUS
3148: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
3149: LD_VAR 0 9
3153: PPUSH
3154: LD_VAR 0 10
3158: PPUSH
3159: CALL_OW 120
// end ;
3163: GO 2942
3165: POP
3166: POP
// x := start_def [ pos ] [ 1 ] ;
3167: LD_ADDR_VAR 0 4
3171: PUSH
3172: LD_EXP 37
3176: PUSH
3177: LD_VAR 0 3
3181: ARRAY
3182: PUSH
3183: LD_INT 1
3185: ARRAY
3186: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
3187: LD_ADDR_VAR 0 5
3191: PUSH
3192: LD_EXP 37
3196: PUSH
3197: LD_VAR 0 3
3201: ARRAY
3202: PUSH
3203: LD_INT 2
3205: ARRAY
3206: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
3207: LD_LOC 8
3211: PUSH
3212: LD_EXP 10
3216: MINUS
3217: PPUSH
3218: LD_INT 1
3220: PPUSH
3221: LD_VAR 0 4
3225: PPUSH
3226: LD_VAR 0 5
3230: PPUSH
3231: LD_INT 5
3233: PPUSH
3234: CALL 1869 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
3238: LD_LOC 5
3242: PPUSH
3243: LD_INT 2
3245: PPUSH
3246: LD_VAR 0 4
3250: PPUSH
3251: LD_VAR 0 5
3255: PPUSH
3256: LD_INT 5
3258: PPUSH
3259: CALL 1869 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
3263: LD_LOC 7
3267: PPUSH
3268: LD_INT 3
3270: PPUSH
3271: LD_VAR 0 4
3275: PPUSH
3276: LD_VAR 0 5
3280: PPUSH
3281: LD_INT 5
3283: PPUSH
3284: CALL 1869 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
3288: LD_LOC 6
3292: PPUSH
3293: LD_INT 4
3295: PPUSH
3296: LD_VAR 0 4
3300: PPUSH
3301: LD_VAR 0 5
3305: PPUSH
3306: LD_INT 5
3308: PPUSH
3309: CALL 1869 0 5
// global_defined := true ;
3313: LD_ADDR_LOC 3
3317: PUSH
3318: LD_INT 1
3320: ST_TO_ADDR
// end ;
3321: LD_VAR 0 2
3325: RET
// function prepare_sides ; var i ; begin
3326: LD_INT 0
3328: PPUSH
3329: PPUSH
// global_units := [ ] ;
3330: LD_ADDR_LOC 2
3334: PUSH
3335: EMPTY
3336: ST_TO_ADDR
// global_defined := false ;
3337: LD_ADDR_LOC 3
3341: PUSH
3342: LD_INT 0
3344: ST_TO_ADDR
// CountClassMembers ;
3345: CALL 3395 0 0
// for i := 1 to 8 do
3349: LD_ADDR_VAR 0 2
3353: PUSH
3354: DOUBLE
3355: LD_INT 1
3357: DEC
3358: ST_TO_ADDR
3359: LD_INT 8
3361: PUSH
3362: FOR_TO
3363: IFFALSE 3388
// if Side_Positions [ i ] then
3365: LD_EXP 31
3369: PUSH
3370: LD_VAR 0 2
3374: ARRAY
3375: IFFALSE 3386
// prepare_side ( i ) ;
3377: LD_VAR 0 2
3381: PPUSH
3382: CALL 2497 0 1
3386: GO 3362
3388: POP
3389: POP
// end ;
3390: LD_VAR 0 1
3394: RET
// function CountClassMembers ; var Mode ; begin
3395: LD_INT 0
3397: PPUSH
3398: PPUSH
// Mode := 1 ;
3399: LD_ADDR_VAR 0 2
3403: PUSH
3404: LD_INT 1
3406: ST_TO_ADDR
// neng := number_of_people ;
3407: LD_ADDR_LOC 5
3411: PUSH
3412: LD_EXP 11
3416: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
3417: LD_ADDR_LOC 8
3421: PUSH
3422: LD_LOC 5
3426: PUSH
3427: LD_INT 4
3429: PUSH
3430: LD_INT 3
3432: PUSH
3433: EMPTY
3434: LIST
3435: LIST
3436: PUSH
3437: LD_VAR 0 2
3441: ARRAY
3442: DIV
3443: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
3444: LD_LOC 8
3448: PUSH
3449: LD_EXP 10
3453: LESS
3454: IFFALSE 3466
// nsol := number_of_breastworks ;
3456: LD_ADDR_LOC 8
3460: PUSH
3461: LD_EXP 10
3465: ST_TO_ADDR
// neng := neng - nsol ;
3466: LD_ADDR_LOC 5
3470: PUSH
3471: LD_LOC 5
3475: PUSH
3476: LD_LOC 8
3480: MINUS
3481: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
3482: LD_ADDR_LOC 6
3486: PUSH
3487: LD_LOC 5
3491: PUSH
3492: LD_INT 3
3494: PUSH
3495: LD_INT 2
3497: PUSH
3498: EMPTY
3499: LIST
3500: LIST
3501: PUSH
3502: LD_VAR 0 2
3506: ARRAY
3507: DIV
3508: ST_TO_ADDR
// if ( nsci < 1 ) then
3509: LD_LOC 6
3513: PUSH
3514: LD_INT 1
3516: LESS
3517: IFFALSE 3527
// nsci := 1 ;
3519: LD_ADDR_LOC 6
3523: PUSH
3524: LD_INT 1
3526: ST_TO_ADDR
// neng := neng - nsci ;
3527: LD_ADDR_LOC 5
3531: PUSH
3532: LD_LOC 5
3536: PUSH
3537: LD_LOC 6
3541: MINUS
3542: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3543: LD_ADDR_LOC 7
3547: PUSH
3548: LD_LOC 5
3552: PUSH
3553: LD_INT 2
3555: DIV
3556: PUSH
3557: LD_INT 0
3559: PUSH
3560: EMPTY
3561: LIST
3562: LIST
3563: PUSH
3564: LD_VAR 0 2
3568: ARRAY
3569: ST_TO_ADDR
// neng := neng - nmech ;
3570: LD_ADDR_LOC 5
3574: PUSH
3575: LD_LOC 5
3579: PUSH
3580: LD_LOC 7
3584: MINUS
3585: ST_TO_ADDR
// if ( neng < 1 ) then
3586: LD_LOC 5
3590: PUSH
3591: LD_INT 1
3593: LESS
3594: IFFALSE 3604
// neng := 1 ;
3596: LD_ADDR_LOC 5
3600: PUSH
3601: LD_INT 1
3603: ST_TO_ADDR
// end ;
3604: LD_VAR 0 1
3608: RET
// starting var i ; begin enable_human_prediction := true ;
3609: LD_ADDR_OWVAR 51
3613: PUSH
3614: LD_INT 1
3616: ST_TO_ADDR
// mp_selectmsg := true ;
3617: LD_ADDR_OWVAR 13
3621: PUSH
3622: LD_INT 1
3624: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3625: CALL 0 0 0
// init_map ;
3629: CALL 1165 0 0
// init_respawning ;
3633: CALL 3712 0 0
// set_shared_visions_and_alliances ;
3637: CALL 1498 0 0
// ResetFog ;
3641: CALL_OW 335
// prepare_sides ;
3645: CALL 3326 0 0
// music_nat := Side_Nations [ your_side ] ;
3649: LD_ADDR_OWVAR 71
3653: PUSH
3654: LD_EXP 32
3658: PUSH
3659: LD_OWVAR 2
3663: ARRAY
3664: ST_TO_ADDR
// CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3665: LD_EXP 37
3669: PUSH
3670: LD_EXP 31
3674: PUSH
3675: LD_OWVAR 2
3679: ARRAY
3680: ARRAY
3681: PUSH
3682: LD_INT 1
3684: ARRAY
3685: PPUSH
3686: LD_EXP 37
3690: PUSH
3691: LD_EXP 31
3695: PUSH
3696: LD_OWVAR 2
3700: ARRAY
3701: ARRAY
3702: PUSH
3703: LD_INT 2
3705: ARRAY
3706: PPUSH
3707: CALL_OW 86
// end ; end_of_file
3711: END
// var respawn , inqueue ; export function init_respawning ; begin
3712: LD_INT 0
3714: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3715: LD_ADDR_LOC 9
3719: PUSH
3720: LD_INT 1
3722: PPUSH
3723: LD_INT 8
3725: PPUSH
3726: CALL_OW 12
3730: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3731: LD_ADDR_LOC 10
3735: PUSH
3736: LD_INT 0
3738: PUSH
3739: LD_INT 0
3741: PUSH
3742: LD_INT 0
3744: PUSH
3745: LD_INT 0
3747: PUSH
3748: LD_INT 0
3750: PUSH
3751: LD_INT 0
3753: PUSH
3754: LD_INT 0
3756: PUSH
3757: LD_INT 0
3759: PUSH
3760: EMPTY
3761: LIST
3762: LIST
3763: LIST
3764: LIST
3765: LIST
3766: LIST
3767: LIST
3768: LIST
3769: ST_TO_ADDR
// end ;
3770: LD_VAR 0 1
3774: RET
// every 0 0$1 + 0 0$0.5 do var n , dep , aktresp ;
3775: GO 3777
3777: DISABLE
3778: LD_INT 0
3780: PPUSH
3781: PPUSH
3782: PPUSH
// begin if respawning_time_max = 0 then
3783: LD_EXP 20
3787: PUSH
3788: LD_INT 0
3790: EQUAL
3791: IFFALSE 3795
// exit ;
3793: GO 4200
// if respawn = 8 then
3795: LD_LOC 9
3799: PUSH
3800: LD_INT 8
3802: EQUAL
3803: IFFALSE 3815
// respawn := 1 else
3805: LD_ADDR_LOC 9
3809: PUSH
3810: LD_INT 1
3812: ST_TO_ADDR
3813: GO 3829
// respawn := respawn + 1 ;
3815: LD_ADDR_LOC 9
3819: PUSH
3820: LD_LOC 9
3824: PUSH
3825: LD_INT 1
3827: PLUS
3828: ST_TO_ADDR
// if Side_Positions [ respawn ] and not inqueue [ respawn ] then
3829: LD_EXP 31
3833: PUSH
3834: LD_LOC 9
3838: ARRAY
3839: PUSH
3840: LD_LOC 10
3844: PUSH
3845: LD_LOC 9
3849: ARRAY
3850: NOT
3851: AND
3852: IFFALSE 4199
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3854: LD_ADDR_VAR 0 1
3858: PUSH
3859: LD_INT 21
3861: PUSH
3862: LD_INT 1
3864: PUSH
3865: EMPTY
3866: LIST
3867: LIST
3868: PUSH
3869: LD_INT 22
3871: PUSH
3872: LD_LOC 9
3876: PUSH
3877: EMPTY
3878: LIST
3879: LIST
3880: PUSH
3881: LD_INT 3
3883: PUSH
3884: LD_INT 23
3886: PUSH
3887: LD_INT 0
3889: PUSH
3890: EMPTY
3891: LIST
3892: LIST
3893: PUSH
3894: EMPTY
3895: LIST
3896: LIST
3897: LIST
3898: LIST
3899: PPUSH
3900: CALL_OW 69
3904: ST_TO_ADDR
// if n < number_of_people then
3905: LD_VAR 0 1
3909: PUSH
3910: LD_EXP 11
3914: LESS
3915: IFFALSE 4196
// begin dep := FilterAllUnits ( [ [ f_type , unit_building ] , [ f_or , [ f_btype , b_depot ] , [ f_btype , b_warehouse ] ] , [ f_ok ] , [ f_side , respawn ] ] ) ;
3917: LD_ADDR_VAR 0 2
3921: PUSH
3922: LD_INT 21
3924: PUSH
3925: LD_INT 3
3927: PUSH
3928: EMPTY
3929: LIST
3930: LIST
3931: PUSH
3932: LD_INT 2
3934: PUSH
3935: LD_INT 30
3937: PUSH
3938: LD_INT 0
3940: PUSH
3941: EMPTY
3942: LIST
3943: LIST
3944: PUSH
3945: LD_INT 30
3947: PUSH
3948: LD_INT 1
3950: PUSH
3951: EMPTY
3952: LIST
3953: LIST
3954: PUSH
3955: EMPTY
3956: LIST
3957: LIST
3958: LIST
3959: PUSH
3960: LD_INT 50
3962: PUSH
3963: EMPTY
3964: LIST
3965: PUSH
3966: LD_INT 22
3968: PUSH
3969: LD_LOC 9
3973: PUSH
3974: EMPTY
3975: LIST
3976: LIST
3977: PUSH
3978: EMPTY
3979: LIST
3980: LIST
3981: LIST
3982: LIST
3983: PPUSH
3984: CALL_OW 69
3988: ST_TO_ADDR
// if dep then
3989: LD_VAR 0 2
3993: IFFALSE 4193
// begin aktresp := respawn ;
3995: LD_ADDR_VAR 0 3
3999: PUSH
4000: LD_LOC 9
4004: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , true ) ;
4005: LD_ADDR_LOC 10
4009: PUSH
4010: LD_LOC 10
4014: PPUSH
4015: LD_VAR 0 3
4019: PPUSH
4020: LD_INT 1
4022: PPUSH
4023: CALL_OW 1
4027: ST_TO_ADDR
// enable ;
4028: ENABLE
// wait ( rand ( respawning_time_min , respawning_time_max ) ) ;
4029: LD_EXP 19
4033: PPUSH
4034: LD_EXP 20
4038: PPUSH
4039: CALL_OW 12
4043: PPUSH
4044: CALL_OW 67
// inqueue := Replace ( inqueue , aktresp , false ) ;
4048: LD_ADDR_LOC 10
4052: PUSH
4053: LD_LOC 10
4057: PPUSH
4058: LD_VAR 0 3
4062: PPUSH
4063: LD_INT 0
4065: PPUSH
4066: CALL_OW 1
4070: ST_TO_ADDR
// hc_name :=  ;
4071: LD_ADDR_OWVAR 26
4075: PUSH
4076: LD_STRING 
4078: ST_TO_ADDR
// hc_importance := 0 ;
4079: LD_ADDR_OWVAR 32
4083: PUSH
4084: LD_INT 0
4086: ST_TO_ADDR
// PrepareHuman ( 0 , 0 , skill_level div 2 ) ;
4087: LD_INT 0
4089: PPUSH
4090: LD_INT 0
4092: PPUSH
4093: LD_EXP 12
4097: PUSH
4098: LD_INT 2
4100: DIV
4101: PPUSH
4102: CALL_OW 380
// uc_nation := Side_Nations [ aktresp ] ;
4106: LD_ADDR_OWVAR 21
4110: PUSH
4111: LD_EXP 32
4115: PUSH
4116: LD_VAR 0 3
4120: ARRAY
4121: ST_TO_ADDR
// uc_side := aktresp ;
4122: LD_ADDR_OWVAR 20
4126: PUSH
4127: LD_VAR 0 3
4131: ST_TO_ADDR
// dep := dep [ Rand ( 1 , dep ) ] ;
4132: LD_ADDR_VAR 0 2
4136: PUSH
4137: LD_VAR 0 2
4141: PUSH
4142: LD_INT 1
4144: PPUSH
4145: LD_VAR 0 2
4149: PPUSH
4150: CALL_OW 12
4154: ARRAY
4155: ST_TO_ADDR
// PlaceUnitXYR ( CreateHuman , GetX ( dep ) , GetY ( dep ) , 7 , true ) ;
4156: CALL_OW 44
4160: PPUSH
4161: LD_VAR 0 2
4165: PPUSH
4166: CALL_OW 250
4170: PPUSH
4171: LD_VAR 0 2
4175: PPUSH
4176: CALL_OW 251
4180: PPUSH
4181: LD_INT 7
4183: PPUSH
4184: LD_INT 1
4186: PPUSH
4187: CALL_OW 50
// end else
4191: GO 4194
// enable ;
4193: ENABLE
// end else
4194: GO 4197
// enable ;
4196: ENABLE
// end else
4197: GO 4200
// enable ;
4199: ENABLE
// end ; end_of_file
4200: PPOPN 3
4202: END
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4203: LD_VAR 0 1
4207: PPUSH
4208: CALL_OW 266
4212: PUSH
4213: LD_INT 0
4215: PUSH
4216: LD_INT 1
4218: PUSH
4219: EMPTY
4220: LIST
4221: LIST
4222: IN
4223: IFFALSE 4248
// SetBName ( b , @ & GetSide ( b ) ) ;
4225: LD_VAR 0 1
4229: PPUSH
4230: LD_STRING @
4232: PUSH
4233: LD_VAR 0 1
4237: PPUSH
4238: CALL_OW 255
4242: STR
4243: PPUSH
4244: CALL_OW 500
// end ;
4248: PPOPN 2
4250: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
4251: LD_VAR 0 1
4255: PPUSH
4256: CALL_OW 266
4260: PUSH
4261: LD_INT 0
4263: PUSH
4264: LD_INT 1
4266: PUSH
4267: EMPTY
4268: LIST
4269: LIST
4270: IN
4271: IFFALSE 4296
// SetBName ( b , @ & GetSide ( b ) ) ;
4273: LD_VAR 0 1
4277: PPUSH
4278: LD_STRING @
4280: PUSH
4281: LD_VAR 0 1
4285: PPUSH
4286: CALL_OW 255
4290: STR
4291: PPUSH
4292: CALL_OW 500
// end ; end_of_file
4296: PPOPN 3
4298: END
// every 1 1$0 + 0 0$0.3 marked 10 do
4299: GO 4301
4301: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
4302: LD_INT 4
4304: PPUSH
4305: LD_INT 5
4307: PPUSH
4308: CALL_OW 12
4312: PPUSH
4313: LD_INT 1
4315: PPUSH
4316: CALL_OW 57
// enable ;
4320: ENABLE
// end ;
4321: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
4322: GO 4324
4324: DISABLE
4325: LD_INT 0
4327: PPUSH
4328: PPUSH
// begin case tick of 1 .. 1 1$0 :
4329: LD_OWVAR 1
4333: PUSH
4334: LD_INT 1
4336: DOUBLE
4337: GREATEREQUAL
4338: IFFALSE 4346
4340: LD_INT 2100
4342: DOUBLE
4343: LESSEQUAL
4344: IFTRUE 4348
4346: GO 4376
4348: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
4349: LD_EXP 15
4353: PUSH
4354: LD_INT 100
4356: DIVREAL
4357: PUSH
4358: LD_INT 350
4360: PPUSH
4361: LD_INT 1050
4363: PPUSH
4364: CALL_OW 12
4368: MUL
4369: PPUSH
4370: CALL_OW 67
4374: GO 4678
4376: LD_INT 2100
4378: PUSH
4379: LD_INT 1
4381: PLUS
4382: DOUBLE
4383: GREATEREQUAL
4384: IFFALSE 4392
4386: LD_INT 10500
4388: DOUBLE
4389: LESSEQUAL
4390: IFTRUE 4394
4392: GO 4422
4394: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
4395: LD_EXP 15
4399: PUSH
4400: LD_INT 100
4402: DIVREAL
4403: PUSH
4404: LD_INT 1050
4406: PPUSH
4407: LD_INT 1575
4409: PPUSH
4410: CALL_OW 12
4414: MUL
4415: PPUSH
4416: CALL_OW 67
4420: GO 4678
4422: LD_INT 10500
4424: PUSH
4425: LD_INT 1
4427: PLUS
4428: DOUBLE
4429: GREATEREQUAL
4430: IFFALSE 4438
4432: LD_INT 21000
4434: DOUBLE
4435: LESSEQUAL
4436: IFTRUE 4440
4438: GO 4468
4440: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
4441: LD_EXP 15
4445: PUSH
4446: LD_INT 100
4448: DIVREAL
4449: PUSH
4450: LD_INT 1575
4452: PPUSH
4453: LD_INT 2100
4455: PPUSH
4456: CALL_OW 12
4460: MUL
4461: PPUSH
4462: CALL_OW 67
4466: GO 4678
4468: LD_INT 21000
4470: PUSH
4471: LD_INT 1
4473: PLUS
4474: DOUBLE
4475: GREATEREQUAL
4476: IFFALSE 4484
4478: LD_INT 42000
4480: DOUBLE
4481: LESSEQUAL
4482: IFTRUE 4486
4484: GO 4514
4486: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
4487: LD_EXP 15
4491: PUSH
4492: LD_INT 100
4494: DIVREAL
4495: PUSH
4496: LD_INT 2100
4498: PPUSH
4499: LD_INT 2625
4501: PPUSH
4502: CALL_OW 12
4506: MUL
4507: PPUSH
4508: CALL_OW 67
4512: GO 4678
4514: LD_INT 42000
4516: PUSH
4517: LD_INT 1
4519: PLUS
4520: DOUBLE
4521: GREATEREQUAL
4522: IFFALSE 4530
4524: LD_INT 63000
4526: DOUBLE
4527: LESSEQUAL
4528: IFTRUE 4532
4530: GO 4560
4532: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
4533: LD_EXP 15
4537: PUSH
4538: LD_INT 100
4540: DIVREAL
4541: PUSH
4542: LD_INT 2625
4544: PPUSH
4545: LD_INT 3150
4547: PPUSH
4548: CALL_OW 12
4552: MUL
4553: PPUSH
4554: CALL_OW 67
4558: GO 4678
4560: LD_INT 63000
4562: PUSH
4563: LD_INT 1
4565: PLUS
4566: DOUBLE
4567: GREATEREQUAL
4568: IFFALSE 4576
4570: LD_INT 105000
4572: DOUBLE
4573: LESSEQUAL
4574: IFTRUE 4578
4576: GO 4606
4578: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
4579: LD_EXP 15
4583: PUSH
4584: LD_INT 100
4586: DIVREAL
4587: PUSH
4588: LD_INT 3150
4590: PPUSH
4591: LD_INT 3675
4593: PPUSH
4594: CALL_OW 12
4598: MUL
4599: PPUSH
4600: CALL_OW 67
4604: GO 4678
4606: LD_INT 105000
4608: PUSH
4609: LD_INT 1
4611: PLUS
4612: DOUBLE
4613: GREATEREQUAL
4614: IFFALSE 4622
4616: LD_INT 630000
4618: DOUBLE
4619: LESSEQUAL
4620: IFTRUE 4624
4622: GO 4652
4624: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
4625: LD_EXP 15
4629: PUSH
4630: LD_INT 100
4632: DIVREAL
4633: PUSH
4634: LD_INT 3675
4636: PPUSH
4637: LD_INT 4200
4639: PPUSH
4640: CALL_OW 12
4644: MUL
4645: PPUSH
4646: CALL_OW 67
4650: GO 4678
4652: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
4653: LD_EXP 15
4657: PUSH
4658: LD_INT 100
4660: DIVREAL
4661: PUSH
4662: LD_INT 4200
4664: PPUSH
4665: LD_INT 5250
4667: PPUSH
4668: CALL_OW 12
4672: MUL
4673: PPUSH
4674: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
4678: LD_ADDR_VAR 0 2
4682: PUSH
4683: LD_INT 3
4685: PPUSH
4686: LD_INT 5
4688: PPUSH
4689: CALL_OW 12
4693: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
4694: LD_ADDR_VAR 0 1
4698: PUSH
4699: LD_EXP 31
4703: PUSH
4704: LD_INT 0
4706: PUSH
4707: EMPTY
4708: LIST
4709: DIFF
4710: PUSH
4711: FOR_IN
4712: IFFALSE 4761
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
4714: LD_VAR 0 2
4718: PPUSH
4719: LD_EXP 37
4723: PUSH
4724: LD_VAR 0 1
4728: ARRAY
4729: PUSH
4730: LD_INT 1
4732: ARRAY
4733: PPUSH
4734: LD_EXP 37
4738: PUSH
4739: LD_VAR 0 1
4743: ARRAY
4744: PUSH
4745: LD_INT 2
4747: ARRAY
4748: PPUSH
4749: LD_INT 20
4751: PPUSH
4752: LD_INT 1
4754: PPUSH
4755: CALL_OW 56
4759: GO 4711
4761: POP
4762: POP
// enable ;
4763: ENABLE
// end ; end_of_file
4764: PPOPN 2
4766: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
4767: LD_INT 0
4769: PPUSH
4770: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
4771: LD_ADDR_VAR 0 2
4775: PUSH
4776: LD_STRING #Multi1x1-Time
4778: PUSH
4779: LD_OWVAR 1
4783: PUSH
4784: EMPTY
4785: LIST
4786: LIST
4787: ST_TO_ADDR
// if ( ExtraStrings ) then
4788: LD_EXP 44
4792: IFFALSE 4814
// AllStrings := AllStrings ^  ^ ExtraStrings ;
4794: LD_ADDR_VAR 0 2
4798: PUSH
4799: LD_VAR 0 2
4803: PUSH
4804: LD_STRING 
4806: ADD
4807: PUSH
4808: LD_EXP 44
4812: ADD
4813: ST_TO_ADDR
// Display_Strings := AllStrings ;
4814: LD_ADDR_OWVAR 47
4818: PUSH
4819: LD_VAR 0 2
4823: ST_TO_ADDR
// end ;
4824: LD_VAR 0 1
4828: RET
// every 0 0$1 do
4829: GO 4831
4831: DISABLE
// begin ShowTimer ;
4832: CALL 4767 0 0
// enable ;
4836: ENABLE
// end ; end_of_file
4837: END
// every 0 0$1 do var i ;
4838: GO 4840
4840: DISABLE
4841: LD_INT 0
4843: PPUSH
// begin enable ;
4844: ENABLE
// for i = 1 to Side_positions do
4845: LD_ADDR_VAR 0 1
4849: PUSH
4850: DOUBLE
4851: LD_INT 1
4853: DEC
4854: ST_TO_ADDR
4855: LD_EXP 31
4859: PUSH
4860: FOR_TO
4861: IFFALSE 4963
// if Side_positions [ i ] and ( i <> your_side ) and not MultiplayerSideAlive ( i ) and Side_Teams [ i ] and ( Side_Teams [ i ] = Side_Teams [ your_side ] ) then
4863: LD_EXP 31
4867: PUSH
4868: LD_VAR 0 1
4872: ARRAY
4873: PUSH
4874: LD_VAR 0 1
4878: PUSH
4879: LD_OWVAR 2
4883: NONEQUAL
4884: AND
4885: PUSH
4886: LD_VAR 0 1
4890: PPUSH
4891: CALL_OW 108
4895: NOT
4896: AND
4897: PUSH
4898: LD_EXP 29
4902: PUSH
4903: LD_VAR 0 1
4907: ARRAY
4908: AND
4909: PUSH
4910: LD_EXP 29
4914: PUSH
4915: LD_VAR 0 1
4919: ARRAY
4920: PUSH
4921: LD_EXP 29
4925: PUSH
4926: LD_OWVAR 2
4930: ARRAY
4931: EQUAL
4932: AND
4933: IFFALSE 4961
// SetSide ( FilterAllUnits ( [ f_side , i ] ) , your_side ) ;
4935: LD_INT 22
4937: PUSH
4938: LD_VAR 0 1
4942: PUSH
4943: EMPTY
4944: LIST
4945: LIST
4946: PPUSH
4947: CALL_OW 69
4951: PPUSH
4952: LD_OWVAR 2
4956: PPUSH
4957: CALL_OW 235
4961: GO 4860
4963: POP
4964: POP
// end ; end_of_file
4965: PPOPN 1
4967: END
// every 0 0$2 do
4968: GO 4970
4970: DISABLE
// begin end ; end_of_file
4971: END
// every 0 0$1 trigger RussianAI = 1 do
4972: LD_EXP 23
4976: PUSH
4977: LD_INT 1
4979: EQUAL
4980: IFFALSE 4993
4982: GO 4984
4984: DISABLE
// begin PlaceRussianBase ;
4985: CALL 5057 0 0
// PrepareRussianPeople ;
4989: CALL 5600 0 0
// end ;
4993: END
// every 10 10$0 trigger RussianAI = 1 do
4994: LD_EXP 23
4998: PUSH
4999: LD_INT 1
5001: EQUAL
5002: IFFALSE 5012
5004: GO 5006
5006: DISABLE
// begin RussianAttackVehicle1 ;
5007: CALL 11239 0 0
// enable ;
5011: ENABLE
// end ;
5012: END
// every 0 0$1 trigger GammaAI = 1 do
5013: LD_EXP 21
5017: PUSH
5018: LD_INT 1
5020: EQUAL
5021: IFFALSE 5034
5023: GO 5025
5025: DISABLE
// begin PlaceGammaBase ;
5026: CALL 8650 0 0
// PrepareGammaPeople ;
5030: CALL 9206 0 0
// end ;
5034: END
// every 0 0$1 trigger SouthAMAI = 1 do
5035: LD_EXP 22
5039: PUSH
5040: LD_INT 1
5042: EQUAL
5043: IFFALSE 5056
5045: GO 5047
5047: DISABLE
// begin PlaceSouthBase ;
5048: CALL 6860 0 0
// PrepareSouthPeople ;
5052: CALL 7390 0 0
// end ;
5056: END
// export rudepo , rulab , rufab , ruarmoury ; export function PlaceRussianBase ; var weapon , RU_Turret , i ; begin
5057: LD_INT 0
5059: PPUSH
5060: PPUSH
5061: PPUSH
5062: PPUSH
// SetTech ( 11 , cpu1 , state_disabled ) ;
5063: LD_INT 11
5065: PPUSH
5066: LD_EXP 60
5070: PPUSH
5071: LD_INT 0
5073: PPUSH
5074: CALL_OW 322
// SetTech ( 2 , cpu1 , state_disabled ) ;
5078: LD_INT 2
5080: PPUSH
5081: LD_EXP 60
5085: PPUSH
5086: LD_INT 0
5088: PPUSH
5089: CALL_OW 322
// uc_nation = 3 ;
5093: LD_ADDR_OWVAR 21
5097: PUSH
5098: LD_INT 3
5100: ST_TO_ADDR
// uc_side = cpu1 ;
5101: LD_ADDR_OWVAR 20
5105: PUSH
5106: LD_EXP 60
5110: ST_TO_ADDR
// bc_type = 1 ;
5111: LD_ADDR_OWVAR 42
5115: PUSH
5116: LD_INT 1
5118: ST_TO_ADDR
// rudepo = CreateAndPlaceBuildingXYD ( 94 , 95 , 5 ) ;
5119: LD_ADDR_EXP 45
5123: PUSH
5124: LD_INT 94
5126: PPUSH
5127: LD_INT 95
5129: PPUSH
5130: LD_INT 5
5132: PPUSH
5133: CALL_OW 47
5137: ST_TO_ADDR
// SetResourceType ( GetBase ( rudepo ) , mat_cans , 20000 [ mat_cans ] ) ;
5138: LD_EXP 45
5142: PPUSH
5143: CALL_OW 274
5147: PPUSH
5148: LD_INT 1
5150: PPUSH
5151: LD_INT 20000
5153: PUSH
5154: LD_INT 1
5156: ARRAY
5157: PPUSH
5158: CALL_OW 277
// SetResourceType ( GetBase ( rudepo ) , 2 , 50 ) ;
5162: LD_EXP 45
5166: PPUSH
5167: CALL_OW 274
5171: PPUSH
5172: LD_INT 2
5174: PPUSH
5175: LD_INT 50
5177: PPUSH
5178: CALL_OW 277
// bc_type = 5 ;
5182: LD_ADDR_OWVAR 42
5186: PUSH
5187: LD_INT 5
5189: ST_TO_ADDR
// ruarmoury = CreateAndPlaceBuildingXYD ( 84 , 81 , 2 ) ;
5190: LD_ADDR_EXP 48
5194: PUSH
5195: LD_INT 84
5197: PPUSH
5198: LD_INT 81
5200: PPUSH
5201: LD_INT 2
5203: PPUSH
5204: CALL_OW 47
5208: ST_TO_ADDR
// bc_type = 32 ;
5209: LD_ADDR_OWVAR 42
5213: PUSH
5214: LD_INT 32
5216: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 74 , 93 , 1 ) ;
5217: LD_INT 74
5219: PPUSH
5220: LD_INT 93
5222: PPUSH
5223: LD_INT 1
5225: PPUSH
5226: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 73 , 83 , 2 ) ;
5230: LD_INT 73
5232: PPUSH
5233: LD_INT 83
5235: PPUSH
5236: LD_INT 2
5238: PPUSH
5239: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 90 , 81 , 3 ) ;
5243: LD_INT 90
5245: PPUSH
5246: LD_INT 81
5248: PPUSH
5249: LD_INT 3
5251: PPUSH
5252: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 99 , 85 , 3 ) ;
5256: LD_INT 99
5258: PPUSH
5259: LD_INT 85
5261: PPUSH
5262: LD_INT 3
5264: PPUSH
5265: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 80 , 82 , 2 ) ;
5269: LD_INT 80
5271: PPUSH
5272: LD_INT 82
5274: PPUSH
5275: LD_INT 2
5277: PPUSH
5278: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 110 , 94 , 4 ) ;
5282: LD_INT 110
5284: PPUSH
5285: LD_INT 94
5287: PPUSH
5288: LD_INT 4
5290: PPUSH
5291: CALL_OW 47
// bc_type = b_lab ;
5295: LD_ADDR_OWVAR 42
5299: PUSH
5300: LD_INT 6
5302: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
5303: LD_ADDR_OWVAR 44
5307: PUSH
5308: LD_INT 10
5310: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
5311: LD_ADDR_OWVAR 45
5315: PUSH
5316: LD_INT 12
5318: ST_TO_ADDR
// rulab = CreateAndPlaceBuildingXYD ( 81 , 95 , 0 ) ;
5319: LD_ADDR_EXP 46
5323: PUSH
5324: LD_INT 81
5326: PPUSH
5327: LD_INT 95
5329: PPUSH
5330: LD_INT 0
5332: PPUSH
5333: CALL_OW 47
5337: ST_TO_ADDR
// bc_type = 3 ;
5338: LD_ADDR_OWVAR 42
5342: PUSH
5343: LD_INT 3
5345: ST_TO_ADDR
// rufab = CreateAndPlaceBuildingXYD ( 98 , 91 , 5 ) ;
5346: LD_ADDR_EXP 47
5350: PUSH
5351: LD_INT 98
5353: PPUSH
5354: LD_INT 91
5356: PPUSH
5357: LD_INT 5
5359: PPUSH
5360: CALL_OW 47
5364: ST_TO_ADDR
// bc_type = 17 ;
5365: LD_ADDR_OWVAR 42
5369: PUSH
5370: LD_INT 17
5372: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 101 , 91 , 4 ) ;
5373: LD_INT 101
5375: PPUSH
5376: LD_INT 91
5378: PPUSH
5379: LD_INT 4
5381: PPUSH
5382: CALL_OW 47
// bc_type = 26 ;
5386: LD_ADDR_OWVAR 42
5390: PUSH
5391: LD_INT 26
5393: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 87 , 97 , 4 ) ;
5394: LD_INT 87
5396: PPUSH
5397: LD_INT 97
5399: PPUSH
5400: LD_INT 4
5402: PPUSH
5403: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 90 , 97 , 1 ) ;
5407: LD_INT 90
5409: PPUSH
5410: LD_INT 97
5412: PPUSH
5413: LD_INT 1
5415: PPUSH
5416: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 89 , 93 , 0 ) ;
5420: LD_INT 89
5422: PPUSH
5423: LD_INT 93
5425: PPUSH
5426: LD_INT 0
5428: PPUSH
5429: CALL_OW 47
// SetResourceVisibility ( 106 , 97 , cpu1 ) ;
5433: LD_INT 106
5435: PPUSH
5436: LD_INT 97
5438: PPUSH
5439: LD_EXP 60
5443: PPUSH
5444: CALL_OW 441
// SetResourceVisibility ( 100 , 96 , cpu1 ) ;
5448: LD_INT 100
5450: PPUSH
5451: LD_INT 96
5453: PPUSH
5454: LD_EXP 60
5458: PPUSH
5459: CALL_OW 441
// bc_type = 29 ;
5463: LD_ADDR_OWVAR 42
5467: PUSH
5468: LD_INT 29
5470: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 106 , 97 , 3 ) ;
5471: LD_INT 106
5473: PPUSH
5474: LD_INT 97
5476: PPUSH
5477: LD_INT 3
5479: PPUSH
5480: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 100 , 96 , 3 ) ;
5484: LD_INT 100
5486: PPUSH
5487: LD_INT 96
5489: PPUSH
5490: LD_INT 3
5492: PPUSH
5493: CALL_OW 47
// weapon = [ 43 , 44 , 46 ] ;
5497: LD_ADDR_VAR 0 2
5501: PUSH
5502: LD_INT 43
5504: PUSH
5505: LD_INT 44
5507: PUSH
5508: LD_INT 46
5510: PUSH
5511: EMPTY
5512: LIST
5513: LIST
5514: LIST
5515: ST_TO_ADDR
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
5516: LD_ADDR_VAR 0 3
5520: PUSH
5521: LD_INT 22
5523: PUSH
5524: LD_EXP 60
5528: PUSH
5529: EMPTY
5530: LIST
5531: LIST
5532: PUSH
5533: LD_INT 30
5535: PUSH
5536: LD_INT 32
5538: PUSH
5539: EMPTY
5540: LIST
5541: LIST
5542: PUSH
5543: EMPTY
5544: LIST
5545: LIST
5546: PPUSH
5547: CALL_OW 69
5551: ST_TO_ADDR
// for i in RU_turret do
5552: LD_ADDR_VAR 0 4
5556: PUSH
5557: LD_VAR 0 3
5561: PUSH
5562: FOR_IN
5563: IFFALSE 5593
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
5565: LD_VAR 0 4
5569: PPUSH
5570: LD_VAR 0 2
5574: PUSH
5575: LD_INT 1
5577: PPUSH
5578: LD_INT 3
5580: PPUSH
5581: CALL_OW 12
5585: ARRAY
5586: PPUSH
5587: CALL_OW 431
// end ;
5591: GO 5562
5593: POP
5594: POP
// end ;
5595: LD_VAR 0 1
5599: RET
// export function PrepareRussianPeople ; var RU_turret , i , level , un , l ; begin
5600: LD_INT 0
5602: PPUSH
5603: PPUSH
5604: PPUSH
5605: PPUSH
5606: PPUSH
5607: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_btype , b_bunker ] ] ) ;
5608: LD_ADDR_VAR 0 2
5612: PUSH
5613: LD_INT 22
5615: PUSH
5616: LD_EXP 60
5620: PUSH
5621: EMPTY
5622: LIST
5623: LIST
5624: PUSH
5625: LD_INT 30
5627: PUSH
5628: LD_INT 32
5630: PUSH
5631: EMPTY
5632: LIST
5633: LIST
5634: PUSH
5635: EMPTY
5636: LIST
5637: LIST
5638: PPUSH
5639: CALL_OW 69
5643: ST_TO_ADDR
// uc_side = cpu1 ;
5644: LD_ADDR_OWVAR 20
5648: PUSH
5649: LD_EXP 60
5653: ST_TO_ADDR
// uc_nation = 3 ;
5654: LD_ADDR_OWVAR 21
5658: PUSH
5659: LD_INT 3
5661: ST_TO_ADDR
// Level = difficultyC ;
5662: LD_ADDR_VAR 0 4
5666: PUSH
5667: LD_EXP 24
5671: ST_TO_ADDR
// hc_gallery =  ;
5672: LD_ADDR_OWVAR 33
5676: PUSH
5677: LD_STRING 
5679: ST_TO_ADDR
// hc_name =  ;
5680: LD_ADDR_OWVAR 26
5684: PUSH
5685: LD_STRING 
5687: ST_TO_ADDR
// for i in RU_Turret do
5688: LD_ADDR_VAR 0 3
5692: PUSH
5693: LD_VAR 0 2
5697: PUSH
5698: FOR_IN
5699: IFFALSE 5828
// begin if IsInUnit ( i ) = 0 then
5701: LD_VAR 0 3
5705: PPUSH
5706: CALL_OW 310
5710: PUSH
5711: LD_INT 0
5713: EQUAL
5714: IFFALSE 5826
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
5716: LD_ADDR_OWVAR 29
5720: PUSH
5721: LD_INT 9
5723: PPUSH
5724: LD_INT 11
5726: PPUSH
5727: CALL_OW 12
5731: PUSH
5732: LD_INT 10
5734: PPUSH
5735: LD_INT 12
5737: PPUSH
5738: CALL_OW 12
5742: PUSH
5743: EMPTY
5744: LIST
5745: LIST
5746: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
5747: LD_ADDR_OWVAR 31
5751: PUSH
5752: LD_VAR 0 4
5756: PUSH
5757: LD_VAR 0 4
5761: PUSH
5762: LD_VAR 0 4
5766: PUSH
5767: LD_VAR 0 4
5771: PUSH
5772: EMPTY
5773: LIST
5774: LIST
5775: LIST
5776: LIST
5777: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5778: LD_ADDR_OWVAR 27
5782: PUSH
5783: LD_INT 1
5785: PPUSH
5786: LD_INT 2
5788: PPUSH
5789: CALL_OW 12
5793: ST_TO_ADDR
// hc_class = 1 ;
5794: LD_ADDR_OWVAR 28
5798: PUSH
5799: LD_INT 1
5801: ST_TO_ADDR
// un := CreateHuman ;
5802: LD_ADDR_VAR 0 5
5806: PUSH
5807: CALL_OW 44
5811: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
5812: LD_VAR 0 5
5816: PPUSH
5817: LD_VAR 0 3
5821: PPUSH
5822: CALL_OW 52
// end ; end ;
5826: GO 5698
5828: POP
5829: POP
// for i in rudepo do
5830: LD_ADDR_VAR 0 3
5834: PUSH
5835: LD_EXP 45
5839: PUSH
5840: FOR_IN
5841: IFFALSE 6018
// begin l = 0 ;
5843: LD_ADDR_VAR 0 6
5847: PUSH
5848: LD_INT 0
5850: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
5851: LD_VAR 0 3
5855: PPUSH
5856: CALL_OW 310
5860: PUSH
5861: LD_INT 0
5863: EQUAL
5864: IFFALSE 6016
// begin repeat begin hc_gallery =  ;
5866: LD_ADDR_OWVAR 33
5870: PUSH
5871: LD_STRING 
5873: ST_TO_ADDR
// hc_name =  ;
5874: LD_ADDR_OWVAR 26
5878: PUSH
5879: LD_STRING 
5881: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
5882: LD_ADDR_OWVAR 29
5886: PUSH
5887: LD_INT 9
5889: PPUSH
5890: LD_INT 11
5892: PPUSH
5893: CALL_OW 12
5897: PUSH
5898: LD_INT 10
5900: PPUSH
5901: LD_INT 12
5903: PPUSH
5904: CALL_OW 12
5908: PUSH
5909: EMPTY
5910: LIST
5911: LIST
5912: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
5913: LD_ADDR_OWVAR 31
5917: PUSH
5918: LD_VAR 0 4
5922: PUSH
5923: LD_VAR 0 4
5927: PUSH
5928: LD_VAR 0 4
5932: PUSH
5933: LD_VAR 0 4
5937: PUSH
5938: EMPTY
5939: LIST
5940: LIST
5941: LIST
5942: LIST
5943: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5944: LD_ADDR_OWVAR 27
5948: PUSH
5949: LD_INT 1
5951: PPUSH
5952: LD_INT 2
5954: PPUSH
5955: CALL_OW 12
5959: ST_TO_ADDR
// hc_class = 2 ;
5960: LD_ADDR_OWVAR 28
5964: PUSH
5965: LD_INT 2
5967: ST_TO_ADDR
// un = CreateHuman ;
5968: LD_ADDR_VAR 0 5
5972: PUSH
5973: CALL_OW 44
5977: ST_TO_ADDR
// PlaceHumanInUnit ( un , rudepo ) ;
5978: LD_VAR 0 5
5982: PPUSH
5983: LD_EXP 45
5987: PPUSH
5988: CALL_OW 52
// l = l + 1 ;
5992: LD_ADDR_VAR 0 6
5996: PUSH
5997: LD_VAR 0 6
6001: PUSH
6002: LD_INT 1
6004: PLUS
6005: ST_TO_ADDR
// end until l = 4 ;
6006: LD_VAR 0 6
6010: PUSH
6011: LD_INT 4
6013: EQUAL
6014: IFFALSE 5866
// end ; end ;
6016: GO 5840
6018: POP
6019: POP
// for i in ruarmoury do
6020: LD_ADDR_VAR 0 3
6024: PUSH
6025: LD_EXP 48
6029: PUSH
6030: FOR_IN
6031: IFFALSE 6208
// begin l = 0 ;
6033: LD_ADDR_VAR 0 6
6037: PUSH
6038: LD_INT 0
6040: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6041: LD_VAR 0 3
6045: PPUSH
6046: CALL_OW 310
6050: PUSH
6051: LD_INT 0
6053: EQUAL
6054: IFFALSE 6206
// begin repeat begin hc_gallery =  ;
6056: LD_ADDR_OWVAR 33
6060: PUSH
6061: LD_STRING 
6063: ST_TO_ADDR
// hc_name =  ;
6064: LD_ADDR_OWVAR 26
6068: PUSH
6069: LD_STRING 
6071: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6072: LD_ADDR_OWVAR 29
6076: PUSH
6077: LD_INT 9
6079: PPUSH
6080: LD_INT 11
6082: PPUSH
6083: CALL_OW 12
6087: PUSH
6088: LD_INT 10
6090: PPUSH
6091: LD_INT 12
6093: PPUSH
6094: CALL_OW 12
6098: PUSH
6099: EMPTY
6100: LIST
6101: LIST
6102: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6103: LD_ADDR_OWVAR 31
6107: PUSH
6108: LD_VAR 0 4
6112: PUSH
6113: LD_VAR 0 4
6117: PUSH
6118: LD_VAR 0 4
6122: PUSH
6123: LD_VAR 0 4
6127: PUSH
6128: EMPTY
6129: LIST
6130: LIST
6131: LIST
6132: LIST
6133: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6134: LD_ADDR_OWVAR 27
6138: PUSH
6139: LD_INT 1
6141: PPUSH
6142: LD_INT 2
6144: PPUSH
6145: CALL_OW 12
6149: ST_TO_ADDR
// hc_class = 1 ;
6150: LD_ADDR_OWVAR 28
6154: PUSH
6155: LD_INT 1
6157: ST_TO_ADDR
// un = CreateHuman ;
6158: LD_ADDR_VAR 0 5
6162: PUSH
6163: CALL_OW 44
6167: ST_TO_ADDR
// PlaceHumanInUnit ( un , ruarmoury ) ;
6168: LD_VAR 0 5
6172: PPUSH
6173: LD_EXP 48
6177: PPUSH
6178: CALL_OW 52
// l = l + 1 ;
6182: LD_ADDR_VAR 0 6
6186: PUSH
6187: LD_VAR 0 6
6191: PUSH
6192: LD_INT 1
6194: PLUS
6195: ST_TO_ADDR
// end until l = 3 ;
6196: LD_VAR 0 6
6200: PUSH
6201: LD_INT 3
6203: EQUAL
6204: IFFALSE 6056
// end ; end ;
6206: GO 6030
6208: POP
6209: POP
// for i in rufab do
6210: LD_ADDR_VAR 0 3
6214: PUSH
6215: LD_EXP 47
6219: PUSH
6220: FOR_IN
6221: IFFALSE 6398
// begin l = 0 ;
6223: LD_ADDR_VAR 0 6
6227: PUSH
6228: LD_INT 0
6230: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6231: LD_VAR 0 3
6235: PPUSH
6236: CALL_OW 310
6240: PUSH
6241: LD_INT 0
6243: EQUAL
6244: IFFALSE 6396
// begin repeat begin hc_gallery =  ;
6246: LD_ADDR_OWVAR 33
6250: PUSH
6251: LD_STRING 
6253: ST_TO_ADDR
// hc_name =  ;
6254: LD_ADDR_OWVAR 26
6258: PUSH
6259: LD_STRING 
6261: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6262: LD_ADDR_OWVAR 29
6266: PUSH
6267: LD_INT 9
6269: PPUSH
6270: LD_INT 11
6272: PPUSH
6273: CALL_OW 12
6277: PUSH
6278: LD_INT 10
6280: PPUSH
6281: LD_INT 12
6283: PPUSH
6284: CALL_OW 12
6288: PUSH
6289: EMPTY
6290: LIST
6291: LIST
6292: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6293: LD_ADDR_OWVAR 31
6297: PUSH
6298: LD_VAR 0 4
6302: PUSH
6303: LD_VAR 0 4
6307: PUSH
6308: LD_VAR 0 4
6312: PUSH
6313: LD_VAR 0 4
6317: PUSH
6318: EMPTY
6319: LIST
6320: LIST
6321: LIST
6322: LIST
6323: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6324: LD_ADDR_OWVAR 27
6328: PUSH
6329: LD_INT 1
6331: PPUSH
6332: LD_INT 2
6334: PPUSH
6335: CALL_OW 12
6339: ST_TO_ADDR
// hc_class = 3 ;
6340: LD_ADDR_OWVAR 28
6344: PUSH
6345: LD_INT 3
6347: ST_TO_ADDR
// un = CreateHuman ;
6348: LD_ADDR_VAR 0 5
6352: PUSH
6353: CALL_OW 44
6357: ST_TO_ADDR
// PlaceHumanInUnit ( un , rufab ) ;
6358: LD_VAR 0 5
6362: PPUSH
6363: LD_EXP 47
6367: PPUSH
6368: CALL_OW 52
// l = l + 1 ;
6372: LD_ADDR_VAR 0 6
6376: PUSH
6377: LD_VAR 0 6
6381: PUSH
6382: LD_INT 1
6384: PLUS
6385: ST_TO_ADDR
// end until l = 5 ;
6386: LD_VAR 0 6
6390: PUSH
6391: LD_INT 5
6393: EQUAL
6394: IFFALSE 6246
// end ; end ;
6396: GO 6220
6398: POP
6399: POP
// for i in rulab do
6400: LD_ADDR_VAR 0 3
6404: PUSH
6405: LD_EXP 46
6409: PUSH
6410: FOR_IN
6411: IFFALSE 6588
// begin l = 0 ;
6413: LD_ADDR_VAR 0 6
6417: PUSH
6418: LD_INT 0
6420: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6421: LD_VAR 0 3
6425: PPUSH
6426: CALL_OW 310
6430: PUSH
6431: LD_INT 0
6433: EQUAL
6434: IFFALSE 6586
// begin repeat begin hc_gallery =  ;
6436: LD_ADDR_OWVAR 33
6440: PUSH
6441: LD_STRING 
6443: ST_TO_ADDR
// hc_name =  ;
6444: LD_ADDR_OWVAR 26
6448: PUSH
6449: LD_STRING 
6451: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6452: LD_ADDR_OWVAR 29
6456: PUSH
6457: LD_INT 9
6459: PPUSH
6460: LD_INT 11
6462: PPUSH
6463: CALL_OW 12
6467: PUSH
6468: LD_INT 10
6470: PPUSH
6471: LD_INT 12
6473: PPUSH
6474: CALL_OW 12
6478: PUSH
6479: EMPTY
6480: LIST
6481: LIST
6482: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6483: LD_ADDR_OWVAR 31
6487: PUSH
6488: LD_VAR 0 4
6492: PUSH
6493: LD_VAR 0 4
6497: PUSH
6498: LD_VAR 0 4
6502: PUSH
6503: LD_VAR 0 4
6507: PUSH
6508: EMPTY
6509: LIST
6510: LIST
6511: LIST
6512: LIST
6513: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6514: LD_ADDR_OWVAR 27
6518: PUSH
6519: LD_INT 1
6521: PPUSH
6522: LD_INT 2
6524: PPUSH
6525: CALL_OW 12
6529: ST_TO_ADDR
// hc_class = 4 ;
6530: LD_ADDR_OWVAR 28
6534: PUSH
6535: LD_INT 4
6537: ST_TO_ADDR
// un = CreateHuman ;
6538: LD_ADDR_VAR 0 5
6542: PUSH
6543: CALL_OW 44
6547: ST_TO_ADDR
// PlaceHumanInUnit ( un , rulab ) ;
6548: LD_VAR 0 5
6552: PPUSH
6553: LD_EXP 46
6557: PPUSH
6558: CALL_OW 52
// l = l + 1 ;
6562: LD_ADDR_VAR 0 6
6566: PUSH
6567: LD_VAR 0 6
6571: PUSH
6572: LD_INT 1
6574: PLUS
6575: ST_TO_ADDR
// end until l = 4 ;
6576: LD_VAR 0 6
6580: PUSH
6581: LD_INT 4
6583: EQUAL
6584: IFFALSE 6436
// end ; end ;
6586: GO 6410
6588: POP
6589: POP
// end ;
6590: LD_VAR 0 1
6594: RET
// every 1 1$0 trigger RussianAI = 1 do var l , level , un , i ;
6595: LD_EXP 23
6599: PUSH
6600: LD_INT 1
6602: EQUAL
6603: IFFALSE 6857
6605: GO 6607
6607: DISABLE
6608: LD_INT 0
6610: PPUSH
6611: PPUSH
6612: PPUSH
6613: PPUSH
// begin enable ;
6614: ENABLE
// if GetSide ( rufab ) = cpu1 then
6615: LD_EXP 47
6619: PPUSH
6620: CALL_OW 255
6624: PUSH
6625: LD_EXP 60
6629: EQUAL
6630: IFFALSE 6857
// begin for i in rufab do
6632: LD_ADDR_VAR 0 4
6636: PUSH
6637: LD_EXP 47
6641: PUSH
6642: FOR_IN
6643: IFFALSE 6855
// begin l = 0 ;
6645: LD_ADDR_VAR 0 1
6649: PUSH
6650: LD_INT 0
6652: ST_TO_ADDR
// Level = difficultyC ;
6653: LD_ADDR_VAR 0 2
6657: PUSH
6658: LD_EXP 24
6662: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
6663: LD_VAR 0 4
6667: PPUSH
6668: CALL_OW 310
6672: PUSH
6673: LD_INT 0
6675: EQUAL
6676: IFFALSE 6853
// begin repeat begin wait ( 0 0$1 ) ;
6678: LD_INT 35
6680: PPUSH
6681: CALL_OW 67
// uc_side = cpu1 ;
6685: LD_ADDR_OWVAR 20
6689: PUSH
6690: LD_EXP 60
6694: ST_TO_ADDR
// uc_nation = 3 ;
6695: LD_ADDR_OWVAR 21
6699: PUSH
6700: LD_INT 3
6702: ST_TO_ADDR
// hc_gallery =  ;
6703: LD_ADDR_OWVAR 33
6707: PUSH
6708: LD_STRING 
6710: ST_TO_ADDR
// hc_name =  ;
6711: LD_ADDR_OWVAR 26
6715: PUSH
6716: LD_STRING 
6718: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
6719: LD_ADDR_OWVAR 29
6723: PUSH
6724: LD_INT 9
6726: PPUSH
6727: LD_INT 11
6729: PPUSH
6730: CALL_OW 12
6734: PUSH
6735: LD_INT 10
6737: PPUSH
6738: LD_INT 12
6740: PPUSH
6741: CALL_OW 12
6745: PUSH
6746: EMPTY
6747: LIST
6748: LIST
6749: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
6750: LD_ADDR_OWVAR 31
6754: PUSH
6755: LD_VAR 0 2
6759: PUSH
6760: LD_VAR 0 2
6764: PUSH
6765: LD_VAR 0 2
6769: PUSH
6770: LD_VAR 0 2
6774: PUSH
6775: EMPTY
6776: LIST
6777: LIST
6778: LIST
6779: LIST
6780: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
6781: LD_ADDR_OWVAR 27
6785: PUSH
6786: LD_INT 1
6788: PPUSH
6789: LD_INT 2
6791: PPUSH
6792: CALL_OW 12
6796: ST_TO_ADDR
// hc_class = 3 ;
6797: LD_ADDR_OWVAR 28
6801: PUSH
6802: LD_INT 3
6804: ST_TO_ADDR
// un = CreateHuman ;
6805: LD_ADDR_VAR 0 3
6809: PUSH
6810: CALL_OW 44
6814: ST_TO_ADDR
// PlaceHumanInUnit ( un , rufab ) ;
6815: LD_VAR 0 3
6819: PPUSH
6820: LD_EXP 47
6824: PPUSH
6825: CALL_OW 52
// l = l + 1 ;
6829: LD_ADDR_VAR 0 1
6833: PUSH
6834: LD_VAR 0 1
6838: PUSH
6839: LD_INT 1
6841: PLUS
6842: ST_TO_ADDR
// end until l = 5 ;
6843: LD_VAR 0 1
6847: PUSH
6848: LD_INT 5
6850: EQUAL
6851: IFFALSE 6678
// end ; end ;
6853: GO 6642
6855: POP
6856: POP
// end ; end ;
6857: PPOPN 4
6859: END
// export am1depo , am1lab , am1fab , am1armoury ; export function PlaceSouthBase ; var weapon , AM_Turret , i ; begin
6860: LD_INT 0
6862: PPUSH
6863: PPUSH
6864: PPUSH
6865: PPUSH
// SetTech ( 11 , cpu4 , state_disabled ) ;
6866: LD_INT 11
6868: PPUSH
6869: LD_EXP 63
6873: PPUSH
6874: LD_INT 0
6876: PPUSH
6877: CALL_OW 322
// SetTech ( 2 , cpu4 , state_disabled ) ;
6881: LD_INT 2
6883: PPUSH
6884: LD_EXP 63
6888: PPUSH
6889: LD_INT 0
6891: PPUSH
6892: CALL_OW 322
// uc_nation = 1 ;
6896: LD_ADDR_OWVAR 21
6900: PUSH
6901: LD_INT 1
6903: ST_TO_ADDR
// uc_side = cpu4 ;
6904: LD_ADDR_OWVAR 20
6908: PUSH
6909: LD_EXP 63
6913: ST_TO_ADDR
// bc_type = 1 ;
6914: LD_ADDR_OWVAR 42
6918: PUSH
6919: LD_INT 1
6921: ST_TO_ADDR
// am1depo = CreateAndPlaceBuildingXYD ( 29 , 44 , 1 ) ;
6922: LD_ADDR_EXP 49
6926: PUSH
6927: LD_INT 29
6929: PPUSH
6930: LD_INT 44
6932: PPUSH
6933: LD_INT 1
6935: PPUSH
6936: CALL_OW 47
6940: ST_TO_ADDR
// SetResourceType ( GetBase ( am1depo ) , mat_cans , 20000 [ mat_cans ] ) ;
6941: LD_EXP 49
6945: PPUSH
6946: CALL_OW 274
6950: PPUSH
6951: LD_INT 1
6953: PPUSH
6954: LD_INT 20000
6956: PUSH
6957: LD_INT 1
6959: ARRAY
6960: PPUSH
6961: CALL_OW 277
// SetResourceType ( GetBase ( am1depo ) , 2 , 50 ) ;
6965: LD_EXP 49
6969: PPUSH
6970: CALL_OW 274
6974: PPUSH
6975: LD_INT 2
6977: PPUSH
6978: LD_INT 50
6980: PPUSH
6981: CALL_OW 277
// bc_type = 5 ;
6985: LD_ADDR_OWVAR 42
6989: PUSH
6990: LD_INT 5
6992: ST_TO_ADDR
// am1armoury = CreateAndPlaceBuildingXYD ( 52 , 52 , 5 ) ;
6993: LD_ADDR_EXP 52
6997: PUSH
6998: LD_INT 52
7000: PPUSH
7001: LD_INT 52
7003: PPUSH
7004: LD_INT 5
7006: PPUSH
7007: CALL_OW 47
7011: ST_TO_ADDR
// bc_type = 32 ;
7012: LD_ADDR_OWVAR 42
7016: PUSH
7017: LD_INT 32
7019: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 54 , 50 , 5 ) ;
7020: LD_INT 54
7022: PPUSH
7023: LD_INT 50
7025: PPUSH
7026: LD_INT 5
7028: PPUSH
7029: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 56 , 49 , 5 ) ;
7033: LD_INT 56
7035: PPUSH
7036: LD_INT 49
7038: PPUSH
7039: LD_INT 5
7041: PPUSH
7042: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 46 , 56 , 5 ) ;
7046: LD_INT 46
7048: PPUSH
7049: LD_INT 56
7051: PPUSH
7052: LD_INT 5
7054: PPUSH
7055: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 44 , 52 , 5 ) ;
7059: LD_INT 44
7061: PPUSH
7062: LD_INT 52
7064: PPUSH
7065: LD_INT 5
7067: PPUSH
7068: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 48 , 49 , 0 ) ;
7072: LD_INT 48
7074: PPUSH
7075: LD_INT 49
7077: PPUSH
7078: LD_INT 0
7080: PPUSH
7081: CALL_OW 47
// bc_type = b_lab ;
7085: LD_ADDR_OWVAR 42
7089: PUSH
7090: LD_INT 6
7092: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
7093: LD_ADDR_OWVAR 44
7097: PUSH
7098: LD_INT 10
7100: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
7101: LD_ADDR_OWVAR 45
7105: PUSH
7106: LD_INT 12
7108: ST_TO_ADDR
// am1lab = CreateAndPlaceBuildingXYD ( 26 , 39 , 4 ) ;
7109: LD_ADDR_EXP 50
7113: PUSH
7114: LD_INT 26
7116: PPUSH
7117: LD_INT 39
7119: PPUSH
7120: LD_INT 4
7122: PPUSH
7123: CALL_OW 47
7127: ST_TO_ADDR
// bc_type = 3 ;
7128: LD_ADDR_OWVAR 42
7132: PUSH
7133: LD_INT 3
7135: ST_TO_ADDR
// am1fab = CreateAndPlaceBuildingXYD ( 34 , 32 , 2 ) ;
7136: LD_ADDR_EXP 51
7140: PUSH
7141: LD_INT 34
7143: PPUSH
7144: LD_INT 32
7146: PPUSH
7147: LD_INT 2
7149: PPUSH
7150: CALL_OW 47
7154: ST_TO_ADDR
// bc_type = 17 ;
7155: LD_ADDR_OWVAR 42
7159: PUSH
7160: LD_INT 17
7162: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 31 , 32 , 1 ) ;
7163: LD_INT 31
7165: PPUSH
7166: LD_INT 32
7168: PPUSH
7169: LD_INT 1
7171: PPUSH
7172: CALL_OW 47
// bc_type = 27 ;
7176: LD_ADDR_OWVAR 42
7180: PUSH
7181: LD_INT 27
7183: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 25 , 29 , 0 ) ;
7184: LD_INT 25
7186: PPUSH
7187: LD_INT 29
7189: PPUSH
7190: LD_INT 0
7192: PPUSH
7193: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 23 , 30 , 5 ) ;
7197: LD_INT 23
7199: PPUSH
7200: LD_INT 30
7202: PPUSH
7203: LD_INT 5
7205: PPUSH
7206: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 20 , 30 , 3 ) ;
7210: LD_INT 20
7212: PPUSH
7213: LD_INT 30
7215: PPUSH
7216: LD_INT 3
7218: PPUSH
7219: CALL_OW 47
// SetResourceVisibility ( 32 , 53 , cpu4 ) ;
7223: LD_INT 32
7225: PPUSH
7226: LD_INT 53
7228: PPUSH
7229: LD_EXP 63
7233: PPUSH
7234: CALL_OW 441
// SetResourceVisibility ( 42 , 54 , cpu4 ) ;
7238: LD_INT 42
7240: PPUSH
7241: LD_INT 54
7243: PPUSH
7244: LD_EXP 63
7248: PPUSH
7249: CALL_OW 441
// bc_type = 29 ;
7253: LD_ADDR_OWVAR 42
7257: PUSH
7258: LD_INT 29
7260: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 32 , 53 , 3 ) ;
7261: LD_INT 32
7263: PPUSH
7264: LD_INT 53
7266: PPUSH
7267: LD_INT 3
7269: PPUSH
7270: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 42 , 54 , 3 ) ;
7274: LD_INT 42
7276: PPUSH
7277: LD_INT 54
7279: PPUSH
7280: LD_INT 3
7282: PPUSH
7283: CALL_OW 47
// weapon = [ 6 , 5 , 4 ] ;
7287: LD_ADDR_VAR 0 2
7291: PUSH
7292: LD_INT 6
7294: PUSH
7295: LD_INT 5
7297: PUSH
7298: LD_INT 4
7300: PUSH
7301: EMPTY
7302: LIST
7303: LIST
7304: LIST
7305: ST_TO_ADDR
// AM_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
7306: LD_ADDR_VAR 0 3
7310: PUSH
7311: LD_INT 22
7313: PUSH
7314: LD_EXP 63
7318: PUSH
7319: EMPTY
7320: LIST
7321: LIST
7322: PUSH
7323: LD_INT 30
7325: PUSH
7326: LD_INT 32
7328: PUSH
7329: EMPTY
7330: LIST
7331: LIST
7332: PUSH
7333: EMPTY
7334: LIST
7335: LIST
7336: PPUSH
7337: CALL_OW 69
7341: ST_TO_ADDR
// for i in AM_turret do
7342: LD_ADDR_VAR 0 4
7346: PUSH
7347: LD_VAR 0 3
7351: PUSH
7352: FOR_IN
7353: IFFALSE 7383
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
7355: LD_VAR 0 4
7359: PPUSH
7360: LD_VAR 0 2
7364: PUSH
7365: LD_INT 1
7367: PPUSH
7368: LD_INT 3
7370: PPUSH
7371: CALL_OW 12
7375: ARRAY
7376: PPUSH
7377: CALL_OW 431
// end ;
7381: GO 7352
7383: POP
7384: POP
// end ;
7385: LD_VAR 0 1
7389: RET
// export function PrepareSouthPeople ; var RU_turret , i , level , un , l ; begin
7390: LD_INT 0
7392: PPUSH
7393: PPUSH
7394: PPUSH
7395: PPUSH
7396: PPUSH
7397: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_btype , b_bunker ] ] ) ;
7398: LD_ADDR_VAR 0 2
7402: PUSH
7403: LD_INT 22
7405: PUSH
7406: LD_EXP 63
7410: PUSH
7411: EMPTY
7412: LIST
7413: LIST
7414: PUSH
7415: LD_INT 30
7417: PUSH
7418: LD_INT 32
7420: PUSH
7421: EMPTY
7422: LIST
7423: LIST
7424: PUSH
7425: EMPTY
7426: LIST
7427: LIST
7428: PPUSH
7429: CALL_OW 69
7433: ST_TO_ADDR
// uc_side = cpu4 ;
7434: LD_ADDR_OWVAR 20
7438: PUSH
7439: LD_EXP 63
7443: ST_TO_ADDR
// uc_nation = 1 ;
7444: LD_ADDR_OWVAR 21
7448: PUSH
7449: LD_INT 1
7451: ST_TO_ADDR
// Level = difficultyC ;
7452: LD_ADDR_VAR 0 4
7456: PUSH
7457: LD_EXP 24
7461: ST_TO_ADDR
// hc_gallery =  ;
7462: LD_ADDR_OWVAR 33
7466: PUSH
7467: LD_STRING 
7469: ST_TO_ADDR
// hc_name =  ;
7470: LD_ADDR_OWVAR 26
7474: PUSH
7475: LD_STRING 
7477: ST_TO_ADDR
// for i in RU_Turret do
7478: LD_ADDR_VAR 0 3
7482: PUSH
7483: LD_VAR 0 2
7487: PUSH
7488: FOR_IN
7489: IFFALSE 7618
// begin if IsInUnit ( i ) = 0 then
7491: LD_VAR 0 3
7495: PPUSH
7496: CALL_OW 310
7500: PUSH
7501: LD_INT 0
7503: EQUAL
7504: IFFALSE 7616
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7506: LD_ADDR_OWVAR 29
7510: PUSH
7511: LD_INT 9
7513: PPUSH
7514: LD_INT 11
7516: PPUSH
7517: CALL_OW 12
7521: PUSH
7522: LD_INT 10
7524: PPUSH
7525: LD_INT 12
7527: PPUSH
7528: CALL_OW 12
7532: PUSH
7533: EMPTY
7534: LIST
7535: LIST
7536: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7537: LD_ADDR_OWVAR 31
7541: PUSH
7542: LD_VAR 0 4
7546: PUSH
7547: LD_VAR 0 4
7551: PUSH
7552: LD_VAR 0 4
7556: PUSH
7557: LD_VAR 0 4
7561: PUSH
7562: EMPTY
7563: LIST
7564: LIST
7565: LIST
7566: LIST
7567: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7568: LD_ADDR_OWVAR 27
7572: PUSH
7573: LD_INT 1
7575: PPUSH
7576: LD_INT 2
7578: PPUSH
7579: CALL_OW 12
7583: ST_TO_ADDR
// hc_class = 1 ;
7584: LD_ADDR_OWVAR 28
7588: PUSH
7589: LD_INT 1
7591: ST_TO_ADDR
// un := CreateHuman ;
7592: LD_ADDR_VAR 0 5
7596: PUSH
7597: CALL_OW 44
7601: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
7602: LD_VAR 0 5
7606: PPUSH
7607: LD_VAR 0 3
7611: PPUSH
7612: CALL_OW 52
// end ; end ;
7616: GO 7488
7618: POP
7619: POP
// for i in am1depo do
7620: LD_ADDR_VAR 0 3
7624: PUSH
7625: LD_EXP 49
7629: PUSH
7630: FOR_IN
7631: IFFALSE 7808
// begin l = 0 ;
7633: LD_ADDR_VAR 0 6
7637: PUSH
7638: LD_INT 0
7640: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7641: LD_VAR 0 3
7645: PPUSH
7646: CALL_OW 310
7650: PUSH
7651: LD_INT 0
7653: EQUAL
7654: IFFALSE 7806
// begin repeat begin hc_gallery =  ;
7656: LD_ADDR_OWVAR 33
7660: PUSH
7661: LD_STRING 
7663: ST_TO_ADDR
// hc_name =  ;
7664: LD_ADDR_OWVAR 26
7668: PUSH
7669: LD_STRING 
7671: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7672: LD_ADDR_OWVAR 29
7676: PUSH
7677: LD_INT 9
7679: PPUSH
7680: LD_INT 11
7682: PPUSH
7683: CALL_OW 12
7687: PUSH
7688: LD_INT 10
7690: PPUSH
7691: LD_INT 12
7693: PPUSH
7694: CALL_OW 12
7698: PUSH
7699: EMPTY
7700: LIST
7701: LIST
7702: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7703: LD_ADDR_OWVAR 31
7707: PUSH
7708: LD_VAR 0 4
7712: PUSH
7713: LD_VAR 0 4
7717: PUSH
7718: LD_VAR 0 4
7722: PUSH
7723: LD_VAR 0 4
7727: PUSH
7728: EMPTY
7729: LIST
7730: LIST
7731: LIST
7732: LIST
7733: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7734: LD_ADDR_OWVAR 27
7738: PUSH
7739: LD_INT 1
7741: PPUSH
7742: LD_INT 2
7744: PPUSH
7745: CALL_OW 12
7749: ST_TO_ADDR
// hc_class = 2 ;
7750: LD_ADDR_OWVAR 28
7754: PUSH
7755: LD_INT 2
7757: ST_TO_ADDR
// un = CreateHuman ;
7758: LD_ADDR_VAR 0 5
7762: PUSH
7763: CALL_OW 44
7767: ST_TO_ADDR
// PlaceHumanInUnit ( un , am1depo ) ;
7768: LD_VAR 0 5
7772: PPUSH
7773: LD_EXP 49
7777: PPUSH
7778: CALL_OW 52
// l = l + 1 ;
7782: LD_ADDR_VAR 0 6
7786: PUSH
7787: LD_VAR 0 6
7791: PUSH
7792: LD_INT 1
7794: PLUS
7795: ST_TO_ADDR
// end until l = 4 ;
7796: LD_VAR 0 6
7800: PUSH
7801: LD_INT 4
7803: EQUAL
7804: IFFALSE 7656
// end ; end ;
7806: GO 7630
7808: POP
7809: POP
// for i in am1armoury do
7810: LD_ADDR_VAR 0 3
7814: PUSH
7815: LD_EXP 52
7819: PUSH
7820: FOR_IN
7821: IFFALSE 7998
// begin l = 0 ;
7823: LD_ADDR_VAR 0 6
7827: PUSH
7828: LD_INT 0
7830: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
7831: LD_VAR 0 3
7835: PPUSH
7836: CALL_OW 310
7840: PUSH
7841: LD_INT 0
7843: EQUAL
7844: IFFALSE 7996
// begin repeat begin hc_gallery =  ;
7846: LD_ADDR_OWVAR 33
7850: PUSH
7851: LD_STRING 
7853: ST_TO_ADDR
// hc_name =  ;
7854: LD_ADDR_OWVAR 26
7858: PUSH
7859: LD_STRING 
7861: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7862: LD_ADDR_OWVAR 29
7866: PUSH
7867: LD_INT 9
7869: PPUSH
7870: LD_INT 11
7872: PPUSH
7873: CALL_OW 12
7877: PUSH
7878: LD_INT 10
7880: PPUSH
7881: LD_INT 12
7883: PPUSH
7884: CALL_OW 12
7888: PUSH
7889: EMPTY
7890: LIST
7891: LIST
7892: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
7893: LD_ADDR_OWVAR 31
7897: PUSH
7898: LD_VAR 0 4
7902: PUSH
7903: LD_VAR 0 4
7907: PUSH
7908: LD_VAR 0 4
7912: PUSH
7913: LD_VAR 0 4
7917: PUSH
7918: EMPTY
7919: LIST
7920: LIST
7921: LIST
7922: LIST
7923: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
7924: LD_ADDR_OWVAR 27
7928: PUSH
7929: LD_INT 1
7931: PPUSH
7932: LD_INT 2
7934: PPUSH
7935: CALL_OW 12
7939: ST_TO_ADDR
// hc_class = 1 ;
7940: LD_ADDR_OWVAR 28
7944: PUSH
7945: LD_INT 1
7947: ST_TO_ADDR
// un = CreateHuman ;
7948: LD_ADDR_VAR 0 5
7952: PUSH
7953: CALL_OW 44
7957: ST_TO_ADDR
// PlaceHumanInUnit ( un , am1armoury ) ;
7958: LD_VAR 0 5
7962: PPUSH
7963: LD_EXP 52
7967: PPUSH
7968: CALL_OW 52
// l = l + 1 ;
7972: LD_ADDR_VAR 0 6
7976: PUSH
7977: LD_VAR 0 6
7981: PUSH
7982: LD_INT 1
7984: PLUS
7985: ST_TO_ADDR
// end until l = 3 ;
7986: LD_VAR 0 6
7990: PUSH
7991: LD_INT 3
7993: EQUAL
7994: IFFALSE 7846
// end ; end ;
7996: GO 7820
7998: POP
7999: POP
// for i in am1fab do
8000: LD_ADDR_VAR 0 3
8004: PUSH
8005: LD_EXP 51
8009: PUSH
8010: FOR_IN
8011: IFFALSE 8188
// begin l = 0 ;
8013: LD_ADDR_VAR 0 6
8017: PUSH
8018: LD_INT 0
8020: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8021: LD_VAR 0 3
8025: PPUSH
8026: CALL_OW 310
8030: PUSH
8031: LD_INT 0
8033: EQUAL
8034: IFFALSE 8186
// begin repeat begin hc_gallery =  ;
8036: LD_ADDR_OWVAR 33
8040: PUSH
8041: LD_STRING 
8043: ST_TO_ADDR
// hc_name =  ;
8044: LD_ADDR_OWVAR 26
8048: PUSH
8049: LD_STRING 
8051: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8052: LD_ADDR_OWVAR 29
8056: PUSH
8057: LD_INT 9
8059: PPUSH
8060: LD_INT 11
8062: PPUSH
8063: CALL_OW 12
8067: PUSH
8068: LD_INT 10
8070: PPUSH
8071: LD_INT 12
8073: PPUSH
8074: CALL_OW 12
8078: PUSH
8079: EMPTY
8080: LIST
8081: LIST
8082: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8083: LD_ADDR_OWVAR 31
8087: PUSH
8088: LD_VAR 0 4
8092: PUSH
8093: LD_VAR 0 4
8097: PUSH
8098: LD_VAR 0 4
8102: PUSH
8103: LD_VAR 0 4
8107: PUSH
8108: EMPTY
8109: LIST
8110: LIST
8111: LIST
8112: LIST
8113: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8114: LD_ADDR_OWVAR 27
8118: PUSH
8119: LD_INT 1
8121: PPUSH
8122: LD_INT 2
8124: PPUSH
8125: CALL_OW 12
8129: ST_TO_ADDR
// hc_class = 3 ;
8130: LD_ADDR_OWVAR 28
8134: PUSH
8135: LD_INT 3
8137: ST_TO_ADDR
// un = CreateHuman ;
8138: LD_ADDR_VAR 0 5
8142: PUSH
8143: CALL_OW 44
8147: ST_TO_ADDR
// PlaceHumanInUnit ( un , am1fab ) ;
8148: LD_VAR 0 5
8152: PPUSH
8153: LD_EXP 51
8157: PPUSH
8158: CALL_OW 52
// l = l + 1 ;
8162: LD_ADDR_VAR 0 6
8166: PUSH
8167: LD_VAR 0 6
8171: PUSH
8172: LD_INT 1
8174: PLUS
8175: ST_TO_ADDR
// end until l = 5 ;
8176: LD_VAR 0 6
8180: PUSH
8181: LD_INT 5
8183: EQUAL
8184: IFFALSE 8036
// end ; end ;
8186: GO 8010
8188: POP
8189: POP
// for i in am1lab do
8190: LD_ADDR_VAR 0 3
8194: PUSH
8195: LD_EXP 50
8199: PUSH
8200: FOR_IN
8201: IFFALSE 8378
// begin l = 0 ;
8203: LD_ADDR_VAR 0 6
8207: PUSH
8208: LD_INT 0
8210: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8211: LD_VAR 0 3
8215: PPUSH
8216: CALL_OW 310
8220: PUSH
8221: LD_INT 0
8223: EQUAL
8224: IFFALSE 8376
// begin repeat begin hc_gallery =  ;
8226: LD_ADDR_OWVAR 33
8230: PUSH
8231: LD_STRING 
8233: ST_TO_ADDR
// hc_name =  ;
8234: LD_ADDR_OWVAR 26
8238: PUSH
8239: LD_STRING 
8241: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8242: LD_ADDR_OWVAR 29
8246: PUSH
8247: LD_INT 9
8249: PPUSH
8250: LD_INT 11
8252: PPUSH
8253: CALL_OW 12
8257: PUSH
8258: LD_INT 10
8260: PPUSH
8261: LD_INT 12
8263: PPUSH
8264: CALL_OW 12
8268: PUSH
8269: EMPTY
8270: LIST
8271: LIST
8272: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8273: LD_ADDR_OWVAR 31
8277: PUSH
8278: LD_VAR 0 4
8282: PUSH
8283: LD_VAR 0 4
8287: PUSH
8288: LD_VAR 0 4
8292: PUSH
8293: LD_VAR 0 4
8297: PUSH
8298: EMPTY
8299: LIST
8300: LIST
8301: LIST
8302: LIST
8303: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8304: LD_ADDR_OWVAR 27
8308: PUSH
8309: LD_INT 1
8311: PPUSH
8312: LD_INT 2
8314: PPUSH
8315: CALL_OW 12
8319: ST_TO_ADDR
// hc_class = 4 ;
8320: LD_ADDR_OWVAR 28
8324: PUSH
8325: LD_INT 4
8327: ST_TO_ADDR
// un = CreateHuman ;
8328: LD_ADDR_VAR 0 5
8332: PUSH
8333: CALL_OW 44
8337: ST_TO_ADDR
// PlaceHumanInUnit ( un , am1lab ) ;
8338: LD_VAR 0 5
8342: PPUSH
8343: LD_EXP 50
8347: PPUSH
8348: CALL_OW 52
// l = l + 1 ;
8352: LD_ADDR_VAR 0 6
8356: PUSH
8357: LD_VAR 0 6
8361: PUSH
8362: LD_INT 1
8364: PLUS
8365: ST_TO_ADDR
// end until l = 4 ;
8366: LD_VAR 0 6
8370: PUSH
8371: LD_INT 4
8373: EQUAL
8374: IFFALSE 8226
// end ; end ;
8376: GO 8200
8378: POP
8379: POP
// end ;
8380: LD_VAR 0 1
8384: RET
// every 1 1$0 trigger SouthAMAI = 1 do var l , level , un , i ;
8385: LD_EXP 22
8389: PUSH
8390: LD_INT 1
8392: EQUAL
8393: IFFALSE 8647
8395: GO 8397
8397: DISABLE
8398: LD_INT 0
8400: PPUSH
8401: PPUSH
8402: PPUSH
8403: PPUSH
// begin enable ;
8404: ENABLE
// if GetSide ( am1fab ) = cpu4 then
8405: LD_EXP 51
8409: PPUSH
8410: CALL_OW 255
8414: PUSH
8415: LD_EXP 63
8419: EQUAL
8420: IFFALSE 8647
// begin for i in am1fab do
8422: LD_ADDR_VAR 0 4
8426: PUSH
8427: LD_EXP 51
8431: PUSH
8432: FOR_IN
8433: IFFALSE 8645
// begin l = 0 ;
8435: LD_ADDR_VAR 0 1
8439: PUSH
8440: LD_INT 0
8442: ST_TO_ADDR
// Level = difficultyC ;
8443: LD_ADDR_VAR 0 2
8447: PUSH
8448: LD_EXP 24
8452: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
8453: LD_VAR 0 4
8457: PPUSH
8458: CALL_OW 310
8462: PUSH
8463: LD_INT 0
8465: EQUAL
8466: IFFALSE 8643
// begin repeat begin wait ( 0 0$1 ) ;
8468: LD_INT 35
8470: PPUSH
8471: CALL_OW 67
// uc_side = cpu4 ;
8475: LD_ADDR_OWVAR 20
8479: PUSH
8480: LD_EXP 63
8484: ST_TO_ADDR
// uc_nation = 1 ;
8485: LD_ADDR_OWVAR 21
8489: PUSH
8490: LD_INT 1
8492: ST_TO_ADDR
// hc_gallery =  ;
8493: LD_ADDR_OWVAR 33
8497: PUSH
8498: LD_STRING 
8500: ST_TO_ADDR
// hc_name =  ;
8501: LD_ADDR_OWVAR 26
8505: PUSH
8506: LD_STRING 
8508: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8509: LD_ADDR_OWVAR 29
8513: PUSH
8514: LD_INT 9
8516: PPUSH
8517: LD_INT 11
8519: PPUSH
8520: CALL_OW 12
8524: PUSH
8525: LD_INT 10
8527: PPUSH
8528: LD_INT 12
8530: PPUSH
8531: CALL_OW 12
8535: PUSH
8536: EMPTY
8537: LIST
8538: LIST
8539: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
8540: LD_ADDR_OWVAR 31
8544: PUSH
8545: LD_VAR 0 2
8549: PUSH
8550: LD_VAR 0 2
8554: PUSH
8555: LD_VAR 0 2
8559: PUSH
8560: LD_VAR 0 2
8564: PUSH
8565: EMPTY
8566: LIST
8567: LIST
8568: LIST
8569: LIST
8570: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8571: LD_ADDR_OWVAR 27
8575: PUSH
8576: LD_INT 1
8578: PPUSH
8579: LD_INT 2
8581: PPUSH
8582: CALL_OW 12
8586: ST_TO_ADDR
// hc_class = 3 ;
8587: LD_ADDR_OWVAR 28
8591: PUSH
8592: LD_INT 3
8594: ST_TO_ADDR
// un = CreateHuman ;
8595: LD_ADDR_VAR 0 3
8599: PUSH
8600: CALL_OW 44
8604: ST_TO_ADDR
// PlaceHumanInUnit ( un , am1fab ) ;
8605: LD_VAR 0 3
8609: PPUSH
8610: LD_EXP 51
8614: PPUSH
8615: CALL_OW 52
// l = l + 1 ;
8619: LD_ADDR_VAR 0 1
8623: PUSH
8624: LD_VAR 0 1
8628: PUSH
8629: LD_INT 1
8631: PLUS
8632: ST_TO_ADDR
// end until l = 5 ;
8633: LD_VAR 0 1
8637: PUSH
8638: LD_INT 5
8640: EQUAL
8641: IFFALSE 8468
// end ; end ;
8643: GO 8432
8645: POP
8646: POP
// end ; end ;
8647: PPOPN 4
8649: END
// export am2depo , am2lab , am2fab , am2armoury ; export function PlaceGammaBase ; var weapon , AM_Turret , i ; begin
8650: LD_INT 0
8652: PPUSH
8653: PPUSH
8654: PPUSH
8655: PPUSH
// SetTech ( 11 , cpu3 , state_disabled ) ;
8656: LD_INT 11
8658: PPUSH
8659: LD_EXP 62
8663: PPUSH
8664: LD_INT 0
8666: PPUSH
8667: CALL_OW 322
// SetTech ( 2 , cpu3 , state_disabled ) ;
8671: LD_INT 2
8673: PPUSH
8674: LD_EXP 62
8678: PPUSH
8679: LD_INT 0
8681: PPUSH
8682: CALL_OW 322
// uc_nation = 1 ;
8686: LD_ADDR_OWVAR 21
8690: PUSH
8691: LD_INT 1
8693: ST_TO_ADDR
// uc_side = cpu3 ;
8694: LD_ADDR_OWVAR 20
8698: PUSH
8699: LD_EXP 62
8703: ST_TO_ADDR
// bc_type = 1 ;
8704: LD_ADDR_OWVAR 42
8708: PUSH
8709: LD_INT 1
8711: ST_TO_ADDR
// am2depo = CreateAndPlaceBuildingXYD ( 48 , 6 , 3 ) ;
8712: LD_ADDR_EXP 53
8716: PUSH
8717: LD_INT 48
8719: PPUSH
8720: LD_INT 6
8722: PPUSH
8723: LD_INT 3
8725: PPUSH
8726: CALL_OW 47
8730: ST_TO_ADDR
// SetResourceType ( GetBase ( am2depo ) , mat_cans , 20000 [ mat_cans ] ) ;
8731: LD_EXP 53
8735: PPUSH
8736: CALL_OW 274
8740: PPUSH
8741: LD_INT 1
8743: PPUSH
8744: LD_INT 20000
8746: PUSH
8747: LD_INT 1
8749: ARRAY
8750: PPUSH
8751: CALL_OW 277
// SetResourceType ( GetBase ( am2depo ) , 2 , 50 ) ;
8755: LD_EXP 53
8759: PPUSH
8760: CALL_OW 274
8764: PPUSH
8765: LD_INT 2
8767: PPUSH
8768: LD_INT 50
8770: PPUSH
8771: CALL_OW 277
// bc_type = 5 ;
8775: LD_ADDR_OWVAR 42
8779: PUSH
8780: LD_INT 5
8782: ST_TO_ADDR
// am2armoury = CreateAndPlaceBuildingXYD ( 57 , 21 , 5 ) ;
8783: LD_ADDR_EXP 56
8787: PUSH
8788: LD_INT 57
8790: PPUSH
8791: LD_INT 21
8793: PPUSH
8794: LD_INT 5
8796: PPUSH
8797: CALL_OW 47
8801: ST_TO_ADDR
// bc_type = 32 ;
8802: LD_ADDR_OWVAR 42
8806: PUSH
8807: LD_INT 32
8809: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 60 , 20 , 5 ) ;
8810: LD_INT 60
8812: PPUSH
8813: LD_INT 20
8815: PPUSH
8816: LD_INT 5
8818: PPUSH
8819: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 54 , 23 , 5 ) ;
8823: LD_INT 54
8825: PPUSH
8826: LD_INT 23
8828: PPUSH
8829: LD_INT 5
8831: PPUSH
8832: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 45 , 24 , 0 ) ;
8836: LD_INT 45
8838: PPUSH
8839: LD_INT 24
8841: PPUSH
8842: LD_INT 0
8844: PPUSH
8845: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 37 , 18 , 0 ) ;
8849: LD_INT 37
8851: PPUSH
8852: LD_INT 18
8854: PPUSH
8855: LD_INT 0
8857: PPUSH
8858: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 63 , 15 , 4 ) ;
8862: LD_INT 63
8864: PPUSH
8865: LD_INT 15
8867: PPUSH
8868: LD_INT 4
8870: PPUSH
8871: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 61 , 7 , 5 ) ;
8875: LD_INT 61
8877: PPUSH
8878: LD_INT 7
8880: PPUSH
8881: LD_INT 5
8883: PPUSH
8884: CALL_OW 47
// bc_type = b_lab ;
8888: LD_ADDR_OWVAR 42
8892: PUSH
8893: LD_INT 6
8895: ST_TO_ADDR
// bc_kind1 = b_lab_weapon ;
8896: LD_ADDR_OWVAR 44
8900: PUSH
8901: LD_INT 10
8903: ST_TO_ADDR
// bc_kind2 = b_lab_computer ;
8904: LD_ADDR_OWVAR 45
8908: PUSH
8909: LD_INT 12
8911: ST_TO_ADDR
// am2lab = CreateAndPlaceBuildingXYD ( 53 , 7 , 3 ) ;
8912: LD_ADDR_EXP 54
8916: PUSH
8917: LD_INT 53
8919: PPUSH
8920: LD_INT 7
8922: PPUSH
8923: LD_INT 3
8925: PPUSH
8926: CALL_OW 47
8930: ST_TO_ADDR
// bc_type = 3 ;
8931: LD_ADDR_OWVAR 42
8935: PUSH
8936: LD_INT 3
8938: ST_TO_ADDR
// am2fab = CreateAndPlaceBuildingXYD ( 43 , 13 , 2 ) ;
8939: LD_ADDR_EXP 55
8943: PUSH
8944: LD_INT 43
8946: PPUSH
8947: LD_INT 13
8949: PPUSH
8950: LD_INT 2
8952: PPUSH
8953: CALL_OW 47
8957: ST_TO_ADDR
// bc_type = 17 ;
8958: LD_ADDR_OWVAR 42
8962: PUSH
8963: LD_INT 17
8965: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 43 , 17 , 0 ) ;
8966: LD_INT 43
8968: PPUSH
8969: LD_INT 17
8971: PPUSH
8972: LD_INT 0
8974: PPUSH
8975: CALL_OW 47
// bc_type = 27 ;
8979: LD_ADDR_OWVAR 42
8983: PUSH
8984: LD_INT 27
8986: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 55 , 3 , 5 ) ;
8987: LD_INT 55
8989: PPUSH
8990: LD_INT 3
8992: PPUSH
8993: LD_INT 5
8995: PPUSH
8996: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 45 , 3 , 5 ) ;
9000: LD_INT 45
9002: PPUSH
9003: LD_INT 3
9005: PPUSH
9006: LD_INT 5
9008: PPUSH
9009: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 44 , 5 , 5 ) ;
9013: LD_INT 44
9015: PPUSH
9016: LD_INT 5
9018: PPUSH
9019: LD_INT 5
9021: PPUSH
9022: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 57 , 2 , 5 ) ;
9026: LD_INT 57
9028: PPUSH
9029: LD_INT 2
9031: PPUSH
9032: LD_INT 5
9034: PPUSH
9035: CALL_OW 47
// SetResourceVisibility ( 38 , 3 , cpu3 ) ;
9039: LD_INT 38
9041: PPUSH
9042: LD_INT 3
9044: PPUSH
9045: LD_EXP 62
9049: PPUSH
9050: CALL_OW 441
// SetResourceVisibility ( 71 , 5 , cpu3 ) ;
9054: LD_INT 71
9056: PPUSH
9057: LD_INT 5
9059: PPUSH
9060: LD_EXP 62
9064: PPUSH
9065: CALL_OW 441
// bc_type = 29 ;
9069: LD_ADDR_OWVAR 42
9073: PUSH
9074: LD_INT 29
9076: ST_TO_ADDR
// CreateAndPlaceBuildingXYD ( 38 , 3 , 3 ) ;
9077: LD_INT 38
9079: PPUSH
9080: LD_INT 3
9082: PPUSH
9083: LD_INT 3
9085: PPUSH
9086: CALL_OW 47
// CreateAndPlaceBuildingXYD ( 71 , 5 , 3 ) ;
9090: LD_INT 71
9092: PPUSH
9093: LD_INT 5
9095: PPUSH
9096: LD_INT 3
9098: PPUSH
9099: CALL_OW 47
// weapon = [ 6 , 5 , 4 ] ;
9103: LD_ADDR_VAR 0 2
9107: PUSH
9108: LD_INT 6
9110: PUSH
9111: LD_INT 5
9113: PUSH
9114: LD_INT 4
9116: PUSH
9117: EMPTY
9118: LIST
9119: LIST
9120: LIST
9121: ST_TO_ADDR
// AM_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
9122: LD_ADDR_VAR 0 3
9126: PUSH
9127: LD_INT 22
9129: PUSH
9130: LD_EXP 62
9134: PUSH
9135: EMPTY
9136: LIST
9137: LIST
9138: PUSH
9139: LD_INT 30
9141: PUSH
9142: LD_INT 32
9144: PUSH
9145: EMPTY
9146: LIST
9147: LIST
9148: PUSH
9149: EMPTY
9150: LIST
9151: LIST
9152: PPUSH
9153: CALL_OW 69
9157: ST_TO_ADDR
// for i in AM_turret do
9158: LD_ADDR_VAR 0 4
9162: PUSH
9163: LD_VAR 0 3
9167: PUSH
9168: FOR_IN
9169: IFFALSE 9199
// begin PlaceWeaponTurret ( i , weapon [ Rand ( 1 , 3 ) ] ) ;
9171: LD_VAR 0 4
9175: PPUSH
9176: LD_VAR 0 2
9180: PUSH
9181: LD_INT 1
9183: PPUSH
9184: LD_INT 3
9186: PPUSH
9187: CALL_OW 12
9191: ARRAY
9192: PPUSH
9193: CALL_OW 431
// end ;
9197: GO 9168
9199: POP
9200: POP
// end ;
9201: LD_VAR 0 1
9205: RET
// export function PrepareGammaPeople ; var RU_turret , i , level , un , l ; begin
9206: LD_INT 0
9208: PPUSH
9209: PPUSH
9210: PPUSH
9211: PPUSH
9212: PPUSH
9213: PPUSH
// RU_Turret := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_btype , b_bunker ] ] ) ;
9214: LD_ADDR_VAR 0 2
9218: PUSH
9219: LD_INT 22
9221: PUSH
9222: LD_EXP 62
9226: PUSH
9227: EMPTY
9228: LIST
9229: LIST
9230: PUSH
9231: LD_INT 30
9233: PUSH
9234: LD_INT 32
9236: PUSH
9237: EMPTY
9238: LIST
9239: LIST
9240: PUSH
9241: EMPTY
9242: LIST
9243: LIST
9244: PPUSH
9245: CALL_OW 69
9249: ST_TO_ADDR
// uc_side = cpu3 ;
9250: LD_ADDR_OWVAR 20
9254: PUSH
9255: LD_EXP 62
9259: ST_TO_ADDR
// uc_nation = 1 ;
9260: LD_ADDR_OWVAR 21
9264: PUSH
9265: LD_INT 1
9267: ST_TO_ADDR
// Level = difficultyC ;
9268: LD_ADDR_VAR 0 4
9272: PUSH
9273: LD_EXP 24
9277: ST_TO_ADDR
// hc_gallery =  ;
9278: LD_ADDR_OWVAR 33
9282: PUSH
9283: LD_STRING 
9285: ST_TO_ADDR
// hc_name =  ;
9286: LD_ADDR_OWVAR 26
9290: PUSH
9291: LD_STRING 
9293: ST_TO_ADDR
// for i in RU_Turret do
9294: LD_ADDR_VAR 0 3
9298: PUSH
9299: LD_VAR 0 2
9303: PUSH
9304: FOR_IN
9305: IFFALSE 9434
// begin if IsInUnit ( i ) = 0 then
9307: LD_VAR 0 3
9311: PPUSH
9312: CALL_OW 310
9316: PUSH
9317: LD_INT 0
9319: EQUAL
9320: IFFALSE 9432
// begin hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9322: LD_ADDR_OWVAR 29
9326: PUSH
9327: LD_INT 9
9329: PPUSH
9330: LD_INT 11
9332: PPUSH
9333: CALL_OW 12
9337: PUSH
9338: LD_INT 10
9340: PPUSH
9341: LD_INT 12
9343: PPUSH
9344: CALL_OW 12
9348: PUSH
9349: EMPTY
9350: LIST
9351: LIST
9352: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9353: LD_ADDR_OWVAR 31
9357: PUSH
9358: LD_VAR 0 4
9362: PUSH
9363: LD_VAR 0 4
9367: PUSH
9368: LD_VAR 0 4
9372: PUSH
9373: LD_VAR 0 4
9377: PUSH
9378: EMPTY
9379: LIST
9380: LIST
9381: LIST
9382: LIST
9383: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9384: LD_ADDR_OWVAR 27
9388: PUSH
9389: LD_INT 1
9391: PPUSH
9392: LD_INT 2
9394: PPUSH
9395: CALL_OW 12
9399: ST_TO_ADDR
// hc_class = 1 ;
9400: LD_ADDR_OWVAR 28
9404: PUSH
9405: LD_INT 1
9407: ST_TO_ADDR
// un := CreateHuman ;
9408: LD_ADDR_VAR 0 5
9412: PUSH
9413: CALL_OW 44
9417: ST_TO_ADDR
// PlaceHumanInUnit ( un , i ) ;
9418: LD_VAR 0 5
9422: PPUSH
9423: LD_VAR 0 3
9427: PPUSH
9428: CALL_OW 52
// end ; end ;
9432: GO 9304
9434: POP
9435: POP
// for i in am2depo do
9436: LD_ADDR_VAR 0 3
9440: PUSH
9441: LD_EXP 53
9445: PUSH
9446: FOR_IN
9447: IFFALSE 9624
// begin l = 0 ;
9449: LD_ADDR_VAR 0 6
9453: PUSH
9454: LD_INT 0
9456: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9457: LD_VAR 0 3
9461: PPUSH
9462: CALL_OW 310
9466: PUSH
9467: LD_INT 0
9469: EQUAL
9470: IFFALSE 9622
// begin repeat begin hc_gallery =  ;
9472: LD_ADDR_OWVAR 33
9476: PUSH
9477: LD_STRING 
9479: ST_TO_ADDR
// hc_name =  ;
9480: LD_ADDR_OWVAR 26
9484: PUSH
9485: LD_STRING 
9487: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9488: LD_ADDR_OWVAR 29
9492: PUSH
9493: LD_INT 9
9495: PPUSH
9496: LD_INT 11
9498: PPUSH
9499: CALL_OW 12
9503: PUSH
9504: LD_INT 10
9506: PPUSH
9507: LD_INT 12
9509: PPUSH
9510: CALL_OW 12
9514: PUSH
9515: EMPTY
9516: LIST
9517: LIST
9518: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9519: LD_ADDR_OWVAR 31
9523: PUSH
9524: LD_VAR 0 4
9528: PUSH
9529: LD_VAR 0 4
9533: PUSH
9534: LD_VAR 0 4
9538: PUSH
9539: LD_VAR 0 4
9543: PUSH
9544: EMPTY
9545: LIST
9546: LIST
9547: LIST
9548: LIST
9549: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9550: LD_ADDR_OWVAR 27
9554: PUSH
9555: LD_INT 1
9557: PPUSH
9558: LD_INT 2
9560: PPUSH
9561: CALL_OW 12
9565: ST_TO_ADDR
// hc_class = 2 ;
9566: LD_ADDR_OWVAR 28
9570: PUSH
9571: LD_INT 2
9573: ST_TO_ADDR
// un = CreateHuman ;
9574: LD_ADDR_VAR 0 5
9578: PUSH
9579: CALL_OW 44
9583: ST_TO_ADDR
// PlaceHumanInUnit ( un , am2depo ) ;
9584: LD_VAR 0 5
9588: PPUSH
9589: LD_EXP 53
9593: PPUSH
9594: CALL_OW 52
// l = l + 1 ;
9598: LD_ADDR_VAR 0 6
9602: PUSH
9603: LD_VAR 0 6
9607: PUSH
9608: LD_INT 1
9610: PLUS
9611: ST_TO_ADDR
// end until l = 4 ;
9612: LD_VAR 0 6
9616: PUSH
9617: LD_INT 4
9619: EQUAL
9620: IFFALSE 9472
// end ; end ;
9622: GO 9446
9624: POP
9625: POP
// for i in am2armoury do
9626: LD_ADDR_VAR 0 3
9630: PUSH
9631: LD_EXP 56
9635: PUSH
9636: FOR_IN
9637: IFFALSE 9814
// begin l = 0 ;
9639: LD_ADDR_VAR 0 6
9643: PUSH
9644: LD_INT 0
9646: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9647: LD_VAR 0 3
9651: PPUSH
9652: CALL_OW 310
9656: PUSH
9657: LD_INT 0
9659: EQUAL
9660: IFFALSE 9812
// begin repeat begin hc_gallery =  ;
9662: LD_ADDR_OWVAR 33
9666: PUSH
9667: LD_STRING 
9669: ST_TO_ADDR
// hc_name =  ;
9670: LD_ADDR_OWVAR 26
9674: PUSH
9675: LD_STRING 
9677: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9678: LD_ADDR_OWVAR 29
9682: PUSH
9683: LD_INT 9
9685: PPUSH
9686: LD_INT 11
9688: PPUSH
9689: CALL_OW 12
9693: PUSH
9694: LD_INT 10
9696: PPUSH
9697: LD_INT 12
9699: PPUSH
9700: CALL_OW 12
9704: PUSH
9705: EMPTY
9706: LIST
9707: LIST
9708: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9709: LD_ADDR_OWVAR 31
9713: PUSH
9714: LD_VAR 0 4
9718: PUSH
9719: LD_VAR 0 4
9723: PUSH
9724: LD_VAR 0 4
9728: PUSH
9729: LD_VAR 0 4
9733: PUSH
9734: EMPTY
9735: LIST
9736: LIST
9737: LIST
9738: LIST
9739: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9740: LD_ADDR_OWVAR 27
9744: PUSH
9745: LD_INT 1
9747: PPUSH
9748: LD_INT 2
9750: PPUSH
9751: CALL_OW 12
9755: ST_TO_ADDR
// hc_class = 1 ;
9756: LD_ADDR_OWVAR 28
9760: PUSH
9761: LD_INT 1
9763: ST_TO_ADDR
// un = CreateHuman ;
9764: LD_ADDR_VAR 0 5
9768: PUSH
9769: CALL_OW 44
9773: ST_TO_ADDR
// PlaceHumanInUnit ( un , am2armoury ) ;
9774: LD_VAR 0 5
9778: PPUSH
9779: LD_EXP 56
9783: PPUSH
9784: CALL_OW 52
// l = l + 1 ;
9788: LD_ADDR_VAR 0 6
9792: PUSH
9793: LD_VAR 0 6
9797: PUSH
9798: LD_INT 1
9800: PLUS
9801: ST_TO_ADDR
// end until l = 3 ;
9802: LD_VAR 0 6
9806: PUSH
9807: LD_INT 3
9809: EQUAL
9810: IFFALSE 9662
// end ; end ;
9812: GO 9636
9814: POP
9815: POP
// for i in am2fab do
9816: LD_ADDR_VAR 0 3
9820: PUSH
9821: LD_EXP 55
9825: PUSH
9826: FOR_IN
9827: IFFALSE 10004
// begin l = 0 ;
9829: LD_ADDR_VAR 0 6
9833: PUSH
9834: LD_INT 0
9836: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
9837: LD_VAR 0 3
9841: PPUSH
9842: CALL_OW 310
9846: PUSH
9847: LD_INT 0
9849: EQUAL
9850: IFFALSE 10002
// begin repeat begin hc_gallery =  ;
9852: LD_ADDR_OWVAR 33
9856: PUSH
9857: LD_STRING 
9859: ST_TO_ADDR
// hc_name =  ;
9860: LD_ADDR_OWVAR 26
9864: PUSH
9865: LD_STRING 
9867: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
9868: LD_ADDR_OWVAR 29
9872: PUSH
9873: LD_INT 9
9875: PPUSH
9876: LD_INT 11
9878: PPUSH
9879: CALL_OW 12
9883: PUSH
9884: LD_INT 10
9886: PPUSH
9887: LD_INT 12
9889: PPUSH
9890: CALL_OW 12
9894: PUSH
9895: EMPTY
9896: LIST
9897: LIST
9898: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
9899: LD_ADDR_OWVAR 31
9903: PUSH
9904: LD_VAR 0 4
9908: PUSH
9909: LD_VAR 0 4
9913: PUSH
9914: LD_VAR 0 4
9918: PUSH
9919: LD_VAR 0 4
9923: PUSH
9924: EMPTY
9925: LIST
9926: LIST
9927: LIST
9928: LIST
9929: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9930: LD_ADDR_OWVAR 27
9934: PUSH
9935: LD_INT 1
9937: PPUSH
9938: LD_INT 2
9940: PPUSH
9941: CALL_OW 12
9945: ST_TO_ADDR
// hc_class = 3 ;
9946: LD_ADDR_OWVAR 28
9950: PUSH
9951: LD_INT 3
9953: ST_TO_ADDR
// un = CreateHuman ;
9954: LD_ADDR_VAR 0 5
9958: PUSH
9959: CALL_OW 44
9963: ST_TO_ADDR
// PlaceHumanInUnit ( un , am2fab ) ;
9964: LD_VAR 0 5
9968: PPUSH
9969: LD_EXP 55
9973: PPUSH
9974: CALL_OW 52
// l = l + 1 ;
9978: LD_ADDR_VAR 0 6
9982: PUSH
9983: LD_VAR 0 6
9987: PUSH
9988: LD_INT 1
9990: PLUS
9991: ST_TO_ADDR
// end until l = 5 ;
9992: LD_VAR 0 6
9996: PUSH
9997: LD_INT 5
9999: EQUAL
10000: IFFALSE 9852
// end ; end ;
10002: GO 9826
10004: POP
10005: POP
// for i in am2lab do
10006: LD_ADDR_VAR 0 3
10010: PUSH
10011: LD_EXP 54
10015: PUSH
10016: FOR_IN
10017: IFFALSE 10194
// begin l = 0 ;
10019: LD_ADDR_VAR 0 6
10023: PUSH
10024: LD_INT 0
10026: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10027: LD_VAR 0 3
10031: PPUSH
10032: CALL_OW 310
10036: PUSH
10037: LD_INT 0
10039: EQUAL
10040: IFFALSE 10192
// begin repeat begin hc_gallery =  ;
10042: LD_ADDR_OWVAR 33
10046: PUSH
10047: LD_STRING 
10049: ST_TO_ADDR
// hc_name =  ;
10050: LD_ADDR_OWVAR 26
10054: PUSH
10055: LD_STRING 
10057: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10058: LD_ADDR_OWVAR 29
10062: PUSH
10063: LD_INT 9
10065: PPUSH
10066: LD_INT 11
10068: PPUSH
10069: CALL_OW 12
10073: PUSH
10074: LD_INT 10
10076: PPUSH
10077: LD_INT 12
10079: PPUSH
10080: CALL_OW 12
10084: PUSH
10085: EMPTY
10086: LIST
10087: LIST
10088: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10089: LD_ADDR_OWVAR 31
10093: PUSH
10094: LD_VAR 0 4
10098: PUSH
10099: LD_VAR 0 4
10103: PUSH
10104: LD_VAR 0 4
10108: PUSH
10109: LD_VAR 0 4
10113: PUSH
10114: EMPTY
10115: LIST
10116: LIST
10117: LIST
10118: LIST
10119: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10120: LD_ADDR_OWVAR 27
10124: PUSH
10125: LD_INT 1
10127: PPUSH
10128: LD_INT 2
10130: PPUSH
10131: CALL_OW 12
10135: ST_TO_ADDR
// hc_class = 4 ;
10136: LD_ADDR_OWVAR 28
10140: PUSH
10141: LD_INT 4
10143: ST_TO_ADDR
// un = CreateHuman ;
10144: LD_ADDR_VAR 0 5
10148: PUSH
10149: CALL_OW 44
10153: ST_TO_ADDR
// PlaceHumanInUnit ( un , am2lab ) ;
10154: LD_VAR 0 5
10158: PPUSH
10159: LD_EXP 54
10163: PPUSH
10164: CALL_OW 52
// l = l + 1 ;
10168: LD_ADDR_VAR 0 6
10172: PUSH
10173: LD_VAR 0 6
10177: PUSH
10178: LD_INT 1
10180: PLUS
10181: ST_TO_ADDR
// end until l = 4 ;
10182: LD_VAR 0 6
10186: PUSH
10187: LD_INT 4
10189: EQUAL
10190: IFFALSE 10042
// end ; end ;
10192: GO 10016
10194: POP
10195: POP
// end ;
10196: LD_VAR 0 1
10200: RET
// every 1 1$0 trigger GammaAI = 1 do var l , level , un , i ;
10201: LD_EXP 21
10205: PUSH
10206: LD_INT 1
10208: EQUAL
10209: IFFALSE 10463
10211: GO 10213
10213: DISABLE
10214: LD_INT 0
10216: PPUSH
10217: PPUSH
10218: PPUSH
10219: PPUSH
// begin enable ;
10220: ENABLE
// if GetSide ( am2fab ) = cpu3 then
10221: LD_EXP 55
10225: PPUSH
10226: CALL_OW 255
10230: PUSH
10231: LD_EXP 62
10235: EQUAL
10236: IFFALSE 10463
// begin for i in am2fab do
10238: LD_ADDR_VAR 0 4
10242: PUSH
10243: LD_EXP 55
10247: PUSH
10248: FOR_IN
10249: IFFALSE 10461
// begin l = 0 ;
10251: LD_ADDR_VAR 0 1
10255: PUSH
10256: LD_INT 0
10258: ST_TO_ADDR
// Level = difficultyC ;
10259: LD_ADDR_VAR 0 2
10263: PUSH
10264: LD_EXP 24
10268: ST_TO_ADDR
// if IsInUnit ( i ) = 0 then
10269: LD_VAR 0 4
10273: PPUSH
10274: CALL_OW 310
10278: PUSH
10279: LD_INT 0
10281: EQUAL
10282: IFFALSE 10459
// begin repeat begin wait ( 0 0$1 ) ;
10284: LD_INT 35
10286: PPUSH
10287: CALL_OW 67
// uc_side = cpu3 ;
10291: LD_ADDR_OWVAR 20
10295: PUSH
10296: LD_EXP 62
10300: ST_TO_ADDR
// uc_nation = 1 ;
10301: LD_ADDR_OWVAR 21
10305: PUSH
10306: LD_INT 1
10308: ST_TO_ADDR
// hc_gallery =  ;
10309: LD_ADDR_OWVAR 33
10313: PUSH
10314: LD_STRING 
10316: ST_TO_ADDR
// hc_name =  ;
10317: LD_ADDR_OWVAR 26
10321: PUSH
10322: LD_STRING 
10324: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
10325: LD_ADDR_OWVAR 29
10329: PUSH
10330: LD_INT 9
10332: PPUSH
10333: LD_INT 11
10335: PPUSH
10336: CALL_OW 12
10340: PUSH
10341: LD_INT 10
10343: PPUSH
10344: LD_INT 12
10346: PPUSH
10347: CALL_OW 12
10351: PUSH
10352: EMPTY
10353: LIST
10354: LIST
10355: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
10356: LD_ADDR_OWVAR 31
10360: PUSH
10361: LD_VAR 0 2
10365: PUSH
10366: LD_VAR 0 2
10370: PUSH
10371: LD_VAR 0 2
10375: PUSH
10376: LD_VAR 0 2
10380: PUSH
10381: EMPTY
10382: LIST
10383: LIST
10384: LIST
10385: LIST
10386: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
10387: LD_ADDR_OWVAR 27
10391: PUSH
10392: LD_INT 1
10394: PPUSH
10395: LD_INT 2
10397: PPUSH
10398: CALL_OW 12
10402: ST_TO_ADDR
// hc_class = 3 ;
10403: LD_ADDR_OWVAR 28
10407: PUSH
10408: LD_INT 3
10410: ST_TO_ADDR
// un = CreateHuman ;
10411: LD_ADDR_VAR 0 3
10415: PUSH
10416: CALL_OW 44
10420: ST_TO_ADDR
// PlaceHumanInUnit ( un , am2fab ) ;
10421: LD_VAR 0 3
10425: PPUSH
10426: LD_EXP 55
10430: PPUSH
10431: CALL_OW 52
// l = l + 1 ;
10435: LD_ADDR_VAR 0 1
10439: PUSH
10440: LD_VAR 0 1
10444: PUSH
10445: LD_INT 1
10447: PLUS
10448: ST_TO_ADDR
// end until l = 5 ;
10449: LD_VAR 0 1
10453: PUSH
10454: LD_INT 5
10456: EQUAL
10457: IFFALSE 10284
// end ; end ;
10459: GO 10248
10461: POP
10462: POP
// end ; end ; end_of_file
10463: PPOPN 4
10465: END
// every 1 do
10466: GO 10468
10468: DISABLE
// begin SelectSide ;
10469: CALL 10478 0 0
// Resetfog ;
10473: CALL_OW 335
// end ;
10477: END
// export player1 , player2 , player3 , cpu1 , cpu2 , cpu3 , cpu4 , enabled_colours ; export function SelectSide ; var i , un ; begin
10478: LD_INT 0
10480: PPUSH
10481: PPUSH
10482: PPUSH
// enabled_colours = [ ] ;
10483: LD_ADDR_EXP 64
10487: PUSH
10488: EMPTY
10489: ST_TO_ADDR
// if RussianAI = 1 then
10490: LD_EXP 23
10494: PUSH
10495: LD_INT 1
10497: EQUAL
10498: IFFALSE 10662
// begin for i = 1 to 8 do
10500: LD_ADDR_VAR 0 2
10504: PUSH
10505: DOUBLE
10506: LD_INT 1
10508: DEC
10509: ST_TO_ADDR
10510: LD_INT 8
10512: PUSH
10513: FOR_TO
10514: IFFALSE 10602
// begin if Side_Positions [ i ] = 0 then
10516: LD_EXP 31
10520: PUSH
10521: LD_VAR 0 2
10525: ARRAY
10526: PUSH
10527: LD_INT 0
10529: EQUAL
10530: IFFALSE 10548
// enabled_colours = enabled_colours ^ i ;
10532: LD_ADDR_EXP 64
10536: PUSH
10537: LD_EXP 64
10541: PUSH
10542: LD_VAR 0 2
10546: ADD
10547: ST_TO_ADDR
// if Side_Positions [ i ] = 1 then
10548: LD_EXP 31
10552: PUSH
10553: LD_VAR 0 2
10557: ARRAY
10558: PUSH
10559: LD_INT 1
10561: EQUAL
10562: IFFALSE 10574
// player1 = i ;
10564: LD_ADDR_EXP 57
10568: PUSH
10569: LD_VAR 0 2
10573: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
10574: LD_EXP 31
10578: PUSH
10579: LD_VAR 0 2
10583: ARRAY
10584: PUSH
10585: LD_INT 2
10587: EQUAL
10588: IFFALSE 10600
// player2 = i ;
10590: LD_ADDR_EXP 58
10594: PUSH
10595: LD_VAR 0 2
10599: ST_TO_ADDR
// end ;
10600: GO 10513
10602: POP
10603: POP
// if not Side_Positions [ 6 ] > 0 then
10604: LD_EXP 31
10608: PUSH
10609: LD_INT 6
10611: ARRAY
10612: PUSH
10613: LD_INT 0
10615: GREATER
10616: NOT
10617: IFFALSE 10629
// cpu1 := 6 else
10619: LD_ADDR_EXP 60
10623: PUSH
10624: LD_INT 6
10626: ST_TO_ADDR
10627: GO 10662
// if not Side_Positions [ 7 ] > 0 then
10629: LD_EXP 31
10633: PUSH
10634: LD_INT 7
10636: ARRAY
10637: PUSH
10638: LD_INT 0
10640: GREATER
10641: NOT
10642: IFFALSE 10654
// cpu1 := 7 else
10644: LD_ADDR_EXP 60
10648: PUSH
10649: LD_INT 7
10651: ST_TO_ADDR
10652: GO 10662
// cpu1 := 8 ;
10654: LD_ADDR_EXP 60
10658: PUSH
10659: LD_INT 8
10661: ST_TO_ADDR
// end ; if not Side_Positions [ 1 ] > 0 then
10662: LD_EXP 31
10666: PUSH
10667: LD_INT 1
10669: ARRAY
10670: PUSH
10671: LD_INT 0
10673: GREATER
10674: NOT
10675: IFFALSE 10687
// cpu2 := 1 else
10677: LD_ADDR_EXP 61
10681: PUSH
10682: LD_INT 1
10684: ST_TO_ADDR
10685: GO 10720
// if not Side_Positions [ 2 ] > 0 then
10687: LD_EXP 31
10691: PUSH
10692: LD_INT 2
10694: ARRAY
10695: PUSH
10696: LD_INT 0
10698: GREATER
10699: NOT
10700: IFFALSE 10712
// cpu2 := 2 else
10702: LD_ADDR_EXP 61
10706: PUSH
10707: LD_INT 2
10709: ST_TO_ADDR
10710: GO 10720
// cpu2 := 3 ;
10712: LD_ADDR_EXP 61
10716: PUSH
10717: LD_INT 3
10719: ST_TO_ADDR
// if GammaAI = 1 then
10720: LD_EXP 21
10724: PUSH
10725: LD_INT 1
10727: EQUAL
10728: IFFALSE 10892
// begin for i = 1 to 8 do
10730: LD_ADDR_VAR 0 2
10734: PUSH
10735: DOUBLE
10736: LD_INT 1
10738: DEC
10739: ST_TO_ADDR
10740: LD_INT 8
10742: PUSH
10743: FOR_TO
10744: IFFALSE 10832
// begin if Side_Positions [ i ] = 0 then
10746: LD_EXP 31
10750: PUSH
10751: LD_VAR 0 2
10755: ARRAY
10756: PUSH
10757: LD_INT 0
10759: EQUAL
10760: IFFALSE 10778
// enabled_colours = enabled_colours ^ i ;
10762: LD_ADDR_EXP 64
10766: PUSH
10767: LD_EXP 64
10771: PUSH
10772: LD_VAR 0 2
10776: ADD
10777: ST_TO_ADDR
// if Side_Positions [ i ] = 1 then
10778: LD_EXP 31
10782: PUSH
10783: LD_VAR 0 2
10787: ARRAY
10788: PUSH
10789: LD_INT 1
10791: EQUAL
10792: IFFALSE 10804
// player1 = i ;
10794: LD_ADDR_EXP 57
10798: PUSH
10799: LD_VAR 0 2
10803: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
10804: LD_EXP 31
10808: PUSH
10809: LD_VAR 0 2
10813: ARRAY
10814: PUSH
10815: LD_INT 2
10817: EQUAL
10818: IFFALSE 10830
// player2 = i ;
10820: LD_ADDR_EXP 58
10824: PUSH
10825: LD_VAR 0 2
10829: ST_TO_ADDR
// end ;
10830: GO 10743
10832: POP
10833: POP
// if not Side_Positions [ 6 ] > 0 then
10834: LD_EXP 31
10838: PUSH
10839: LD_INT 6
10841: ARRAY
10842: PUSH
10843: LD_INT 0
10845: GREATER
10846: NOT
10847: IFFALSE 10859
// cpu4 := 3 else
10849: LD_ADDR_EXP 63
10853: PUSH
10854: LD_INT 3
10856: ST_TO_ADDR
10857: GO 10892
// if not Side_Positions [ 7 ] > 0 then
10859: LD_EXP 31
10863: PUSH
10864: LD_INT 7
10866: ARRAY
10867: PUSH
10868: LD_INT 0
10870: GREATER
10871: NOT
10872: IFFALSE 10884
// cpu4 := 6 else
10874: LD_ADDR_EXP 63
10878: PUSH
10879: LD_INT 6
10881: ST_TO_ADDR
10882: GO 10892
// cpu4 := 8 ;
10884: LD_ADDR_EXP 63
10888: PUSH
10889: LD_INT 8
10891: ST_TO_ADDR
// end ; if SouthAMAI = 1 then
10892: LD_EXP 22
10896: PUSH
10897: LD_INT 1
10899: EQUAL
10900: IFFALSE 11064
// begin for i = 1 to 8 do
10902: LD_ADDR_VAR 0 2
10906: PUSH
10907: DOUBLE
10908: LD_INT 1
10910: DEC
10911: ST_TO_ADDR
10912: LD_INT 8
10914: PUSH
10915: FOR_TO
10916: IFFALSE 11004
// begin if Side_Positions [ i ] = 0 then
10918: LD_EXP 31
10922: PUSH
10923: LD_VAR 0 2
10927: ARRAY
10928: PUSH
10929: LD_INT 0
10931: EQUAL
10932: IFFALSE 10950
// enabled_colours = enabled_colours ^ i ;
10934: LD_ADDR_EXP 64
10938: PUSH
10939: LD_EXP 64
10943: PUSH
10944: LD_VAR 0 2
10948: ADD
10949: ST_TO_ADDR
// if Side_Positions [ i ] = 1 then
10950: LD_EXP 31
10954: PUSH
10955: LD_VAR 0 2
10959: ARRAY
10960: PUSH
10961: LD_INT 1
10963: EQUAL
10964: IFFALSE 10976
// player1 = i ;
10966: LD_ADDR_EXP 57
10970: PUSH
10971: LD_VAR 0 2
10975: ST_TO_ADDR
// if Side_Positions [ i ] = 2 then
10976: LD_EXP 31
10980: PUSH
10981: LD_VAR 0 2
10985: ARRAY
10986: PUSH
10987: LD_INT 2
10989: EQUAL
10990: IFFALSE 11002
// player2 = i ;
10992: LD_ADDR_EXP 58
10996: PUSH
10997: LD_VAR 0 2
11001: ST_TO_ADDR
// end ;
11002: GO 10915
11004: POP
11005: POP
// if not Side_Positions [ 6 ] > 0 then
11006: LD_EXP 31
11010: PUSH
11011: LD_INT 6
11013: ARRAY
11014: PUSH
11015: LD_INT 0
11017: GREATER
11018: NOT
11019: IFFALSE 11031
// cpu3 := 1 else
11021: LD_ADDR_EXP 62
11025: PUSH
11026: LD_INT 1
11028: ST_TO_ADDR
11029: GO 11064
// if not Side_Positions [ 7 ] > 0 then
11031: LD_EXP 31
11035: PUSH
11036: LD_INT 7
11038: ARRAY
11039: PUSH
11040: LD_INT 0
11042: GREATER
11043: NOT
11044: IFFALSE 11056
// cpu3 := 5 else
11046: LD_ADDR_EXP 62
11050: PUSH
11051: LD_INT 5
11053: ST_TO_ADDR
11054: GO 11064
// cpu3 := 7 ;
11056: LD_ADDR_EXP 62
11060: PUSH
11061: LD_INT 7
11063: ST_TO_ADDR
// end ; end ;
11064: LD_VAR 0 1
11068: RET
// export function ResAllTechs ( side , lab ) ; var i , tech , cout ; begin
11069: LD_INT 0
11071: PPUSH
11072: PPUSH
11073: PPUSH
11074: PPUSH
// for i = 1 to 72 do
11075: LD_ADDR_VAR 0 4
11079: PUSH
11080: DOUBLE
11081: LD_INT 1
11083: DEC
11084: ST_TO_ADDR
11085: LD_INT 72
11087: PUSH
11088: FOR_TO
11089: IFFALSE 11127
// begin if GetTech ( i , side ) = state_enabled then
11091: LD_VAR 0 4
11095: PPUSH
11096: LD_VAR 0 1
11100: PPUSH
11101: CALL_OW 321
11105: PUSH
11106: LD_INT 1
11108: EQUAL
11109: IFFALSE 11125
// AddComResearch ( lab , i ) ;
11111: LD_VAR 0 2
11115: PPUSH
11116: LD_VAR 0 4
11120: PPUSH
11121: CALL_OW 184
// end ;
11125: GO 11088
11127: POP
11128: POP
// cout = cout + 1 ;
11129: LD_ADDR_VAR 0 6
11133: PUSH
11134: LD_VAR 0 6
11138: PUSH
11139: LD_INT 1
11141: PLUS
11142: ST_TO_ADDR
// Wait ( 0 0$01 ) ;
11143: LD_INT 35
11145: PPUSH
11146: CALL_OW 67
// end ;
11150: LD_VAR 0 3
11154: RET
// every 0 0$1 trigger RussianAI = 1 do
11155: LD_EXP 23
11159: PUSH
11160: LD_INT 1
11162: EQUAL
11163: IFFALSE 11182
11165: GO 11167
11167: DISABLE
// begin ResAllTechs ( cpu1 , rulab ) ;
11168: LD_EXP 60
11172: PPUSH
11173: LD_EXP 46
11177: PPUSH
11178: CALL 11069 0 2
// end ;
11182: END
// every 0 0$1 trigger RussianAI = 1 do
11183: LD_EXP 23
11187: PUSH
11188: LD_INT 1
11190: EQUAL
11191: IFFALSE 11210
11193: GO 11195
11195: DISABLE
// begin ResAllTechs ( cpu3 , rulab ) ;
11196: LD_EXP 62
11200: PPUSH
11201: LD_EXP 46
11205: PPUSH
11206: CALL 11069 0 2
// end ;
11210: END
// every 0 0$1 trigger RussianAI = 1 do
11211: LD_EXP 23
11215: PUSH
11216: LD_INT 1
11218: EQUAL
11219: IFFALSE 11238
11221: GO 11223
11223: DISABLE
// begin ResAllTechs ( cpu1 , rulab ) ;
11224: LD_EXP 60
11228: PPUSH
11229: LD_EXP 46
11233: PPUSH
11234: CALL 11069 0 2
// end ; end_of_file
11238: END
// export function RussianAttackVehicle1 ; var veh , Level , i , l , tactic ; begin
11239: LD_INT 0
11241: PPUSH
11242: PPUSH
11243: PPUSH
11244: PPUSH
11245: PPUSH
11246: PPUSH
// Level = difficultyC ;
11247: LD_ADDR_VAR 0 3
11251: PUSH
11252: LD_EXP 24
11256: ST_TO_ADDR
// Tactic = Rand ( 1 , 2 ) ;
11257: LD_ADDR_VAR 0 6
11261: PUSH
11262: LD_INT 1
11264: PPUSH
11265: LD_INT 2
11267: PPUSH
11268: CALL_OW 12
11272: ST_TO_ADDR
// l = 0 ;
11273: LD_ADDR_VAR 0 5
11277: PUSH
11278: LD_INT 0
11280: ST_TO_ADDR
// uc_side = cpu2 ;
11281: LD_ADDR_OWVAR 20
11285: PUSH
11286: LD_EXP 61
11290: ST_TO_ADDR
// uc_nation = 3 ;
11291: LD_ADDR_OWVAR 21
11295: PUSH
11296: LD_INT 3
11298: ST_TO_ADDR
// repeat begin vc_chassis = 22 ;
11299: LD_ADDR_OWVAR 37
11303: PUSH
11304: LD_INT 22
11306: ST_TO_ADDR
// vc_engine = engine_combustion ;
11307: LD_ADDR_OWVAR 39
11311: PUSH
11312: LD_INT 1
11314: ST_TO_ADDR
// vc_control = control_manual ;
11315: LD_ADDR_OWVAR 38
11319: PUSH
11320: LD_INT 1
11322: ST_TO_ADDR
// vc_weapon = 44 ;
11323: LD_ADDR_OWVAR 40
11327: PUSH
11328: LD_INT 44
11330: ST_TO_ADDR
// veh = CreateVehicle ;
11331: LD_ADDR_VAR 0 2
11335: PUSH
11336: CALL_OW 45
11340: ST_TO_ADDR
// PlaceUnitArea ( veh , RussianSpawn , false ) ;
11341: LD_VAR 0 2
11345: PPUSH
11346: LD_INT 6
11348: PPUSH
11349: LD_INT 0
11351: PPUSH
11352: CALL_OW 49
// hc_class = 3 ;
11356: LD_ADDR_OWVAR 28
11360: PUSH
11361: LD_INT 3
11363: ST_TO_ADDR
// hc_name =  ;
11364: LD_ADDR_OWVAR 26
11368: PUSH
11369: LD_STRING 
11371: ST_TO_ADDR
// hc_gallery =  ;
11372: LD_ADDR_OWVAR 33
11376: PUSH
11377: LD_STRING 
11379: ST_TO_ADDR
// hc_sex = [ Rand ( sex_female , sex_male ) ] ;
11380: LD_ADDR_OWVAR 27
11384: PUSH
11385: LD_INT 2
11387: PPUSH
11388: LD_INT 1
11390: PPUSH
11391: CALL_OW 12
11395: PUSH
11396: EMPTY
11397: LIST
11398: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11399: LD_ADDR_OWVAR 31
11403: PUSH
11404: LD_VAR 0 3
11408: PUSH
11409: LD_VAR 0 3
11413: PUSH
11414: LD_VAR 0 3
11418: PUSH
11419: LD_VAR 0 3
11423: PUSH
11424: EMPTY
11425: LIST
11426: LIST
11427: LIST
11428: LIST
11429: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , veh ) ;
11430: CALL_OW 44
11434: PPUSH
11435: LD_VAR 0 2
11439: PPUSH
11440: CALL_OW 52
// l = l + 1 ;
11444: LD_ADDR_VAR 0 5
11448: PUSH
11449: LD_VAR 0 5
11453: PUSH
11454: LD_INT 1
11456: PLUS
11457: ST_TO_ADDR
// end until l = 2 ;
11458: LD_VAR 0 5
11462: PUSH
11463: LD_INT 2
11465: EQUAL
11466: IFFALSE 11299
// l = 0 ;
11468: LD_ADDR_VAR 0 5
11472: PUSH
11473: LD_INT 0
11475: ST_TO_ADDR
// wait ( 0 0$2 ) ;
11476: LD_INT 70
11478: PPUSH
11479: CALL_OW 67
// repeat begin vc_chassis = 22 ;
11483: LD_ADDR_OWVAR 37
11487: PUSH
11488: LD_INT 22
11490: ST_TO_ADDR
// vc_engine = engine_combustion ;
11491: LD_ADDR_OWVAR 39
11495: PUSH
11496: LD_INT 1
11498: ST_TO_ADDR
// vc_control = control_manual ;
11499: LD_ADDR_OWVAR 38
11503: PUSH
11504: LD_INT 1
11506: ST_TO_ADDR
// vc_weapon = 43 ;
11507: LD_ADDR_OWVAR 40
11511: PUSH
11512: LD_INT 43
11514: ST_TO_ADDR
// veh = CreateVehicle ;
11515: LD_ADDR_VAR 0 2
11519: PUSH
11520: CALL_OW 45
11524: ST_TO_ADDR
// PlaceUnitArea ( veh , RussianSpawn , false ) ;
11525: LD_VAR 0 2
11529: PPUSH
11530: LD_INT 6
11532: PPUSH
11533: LD_INT 0
11535: PPUSH
11536: CALL_OW 49
// hc_class = 3 ;
11540: LD_ADDR_OWVAR 28
11544: PUSH
11545: LD_INT 3
11547: ST_TO_ADDR
// hc_name =  ;
11548: LD_ADDR_OWVAR 26
11552: PUSH
11553: LD_STRING 
11555: ST_TO_ADDR
// hc_gallery =  ;
11556: LD_ADDR_OWVAR 33
11560: PUSH
11561: LD_STRING 
11563: ST_TO_ADDR
// hc_sex = [ Rand ( sex_female , sex_male ) ] ;
11564: LD_ADDR_OWVAR 27
11568: PUSH
11569: LD_INT 2
11571: PPUSH
11572: LD_INT 1
11574: PPUSH
11575: CALL_OW 12
11579: PUSH
11580: EMPTY
11581: LIST
11582: ST_TO_ADDR
// hc_skills = [ Level , Level , Level , Level ] ;
11583: LD_ADDR_OWVAR 31
11587: PUSH
11588: LD_VAR 0 3
11592: PUSH
11593: LD_VAR 0 3
11597: PUSH
11598: LD_VAR 0 3
11602: PUSH
11603: LD_VAR 0 3
11607: PUSH
11608: EMPTY
11609: LIST
11610: LIST
11611: LIST
11612: LIST
11613: ST_TO_ADDR
// PlaceHumanInUnit ( CreateHuman , veh ) ;
11614: CALL_OW 44
11618: PPUSH
11619: LD_VAR 0 2
11623: PPUSH
11624: CALL_OW 52
// l = l + 1 ;
11628: LD_ADDR_VAR 0 5
11632: PUSH
11633: LD_VAR 0 5
11637: PUSH
11638: LD_INT 1
11640: PLUS
11641: ST_TO_ADDR
// end until l = 2 ;
11642: LD_VAR 0 5
11646: PUSH
11647: LD_INT 2
11649: EQUAL
11650: IFFALSE 11483
// wait ( 0 0$1 ) ;
11652: LD_INT 35
11654: PPUSH
11655: CALL_OW 67
// for i in filterallunits ( [ f_side , cpu2 ] ) do
11659: LD_ADDR_VAR 0 4
11663: PUSH
11664: LD_INT 22
11666: PUSH
11667: LD_EXP 61
11671: PUSH
11672: EMPTY
11673: LIST
11674: LIST
11675: PPUSH
11676: CALL_OW 69
11680: PUSH
11681: FOR_IN
11682: IFFALSE 11778
// begin if Tactic = 1 then
11684: LD_VAR 0 6
11688: PUSH
11689: LD_INT 1
11691: EQUAL
11692: IFFALSE 11730
// begin AddComAgressiveMove ( [ i ] , 46 , 9 ) ;
11694: LD_VAR 0 4
11698: PUSH
11699: EMPTY
11700: LIST
11701: PPUSH
11702: LD_INT 46
11704: PPUSH
11705: LD_INT 9
11707: PPUSH
11708: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 34 , 43 ) ;
11712: LD_VAR 0 4
11716: PUSH
11717: EMPTY
11718: LIST
11719: PPUSH
11720: LD_INT 34
11722: PPUSH
11723: LD_INT 43
11725: PPUSH
11726: CALL_OW 174
// end ; if Tactic = 2 then
11730: LD_VAR 0 6
11734: PUSH
11735: LD_INT 2
11737: EQUAL
11738: IFFALSE 11776
// begin AddComAgressiveMove ( [ i ] , 34 , 43 ) ;
11740: LD_VAR 0 4
11744: PUSH
11745: EMPTY
11746: LIST
11747: PPUSH
11748: LD_INT 34
11750: PPUSH
11751: LD_INT 43
11753: PPUSH
11754: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 46 , 9 ) ;
11758: LD_VAR 0 4
11762: PUSH
11763: EMPTY
11764: LIST
11765: PPUSH
11766: LD_INT 46
11768: PPUSH
11769: LD_INT 9
11771: PPUSH
11772: CALL_OW 174
// end ; end ;
11776: GO 11681
11778: POP
11779: POP
// end ;
11780: LD_VAR 0 1
11784: RET
// every 0 0$3 trigger RussianAI = 1 do
11785: LD_EXP 23
11789: PUSH
11790: LD_INT 1
11792: EQUAL
11793: IFFALSE 11810
11795: GO 11797
11797: DISABLE
// begin wait ( 0 0$1 ) ;
11798: LD_INT 35
11800: PPUSH
11801: CALL_OW 67
// enable ;
11805: ENABLE
// RepairBuildingRussian ;
11806: CALL 11811 0 0
// end ;
11810: END
// export DestroyRepairRU ; export function RepairBuildingRussian ; var enginer_list , scientist_list , buildings , i , un ; begin
11811: LD_INT 0
11813: PPUSH
11814: PPUSH
11815: PPUSH
11816: PPUSH
11817: PPUSH
11818: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 2 ] ] ) ;
11819: LD_ADDR_VAR 0 2
11823: PUSH
11824: LD_INT 22
11826: PUSH
11827: LD_EXP 60
11831: PUSH
11832: EMPTY
11833: LIST
11834: LIST
11835: PUSH
11836: LD_INT 25
11838: PUSH
11839: LD_INT 2
11841: PUSH
11842: EMPTY
11843: LIST
11844: LIST
11845: PUSH
11846: EMPTY
11847: LIST
11848: LIST
11849: PPUSH
11850: CALL_OW 69
11854: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_class , 4 ] ] ) ;
11855: LD_ADDR_VAR 0 3
11859: PUSH
11860: LD_INT 22
11862: PUSH
11863: LD_EXP 60
11867: PUSH
11868: EMPTY
11869: LIST
11870: LIST
11871: PUSH
11872: LD_INT 25
11874: PUSH
11875: LD_INT 4
11877: PUSH
11878: EMPTY
11879: LIST
11880: LIST
11881: PUSH
11882: EMPTY
11883: LIST
11884: LIST
11885: PPUSH
11886: CALL_OW 69
11890: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu1 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
11891: LD_ADDR_VAR 0 4
11895: PUSH
11896: LD_INT 22
11898: PUSH
11899: LD_EXP 60
11903: PUSH
11904: EMPTY
11905: LIST
11906: LIST
11907: PUSH
11908: LD_INT 21
11910: PUSH
11911: LD_INT 3
11913: PUSH
11914: EMPTY
11915: LIST
11916: LIST
11917: PUSH
11918: LD_INT 3
11920: PUSH
11921: LD_INT 24
11923: PUSH
11924: LD_INT 1000
11926: PUSH
11927: EMPTY
11928: LIST
11929: LIST
11930: PUSH
11931: EMPTY
11932: LIST
11933: LIST
11934: PUSH
11935: EMPTY
11936: LIST
11937: LIST
11938: LIST
11939: PUSH
11940: EMPTY
11941: LIST
11942: PPUSH
11943: CALL_OW 69
11947: ST_TO_ADDR
// DestroyRepairRU = 0 ;
11948: LD_ADDR_EXP 65
11952: PUSH
11953: LD_INT 0
11955: ST_TO_ADDR
// if buildings > 0 then
11956: LD_VAR 0 4
11960: PUSH
11961: LD_INT 0
11963: GREATER
11964: IFFALSE 12099
// begin for i = 1 to enginer_list do
11966: LD_ADDR_VAR 0 5
11970: PUSH
11971: DOUBLE
11972: LD_INT 1
11974: DEC
11975: ST_TO_ADDR
11976: LD_VAR 0 2
11980: PUSH
11981: FOR_TO
11982: IFFALSE 12097
// begin ComExitBuilding ( enginer_list [ i ] ) ;
11984: LD_VAR 0 2
11988: PUSH
11989: LD_VAR 0 5
11993: ARRAY
11994: PPUSH
11995: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
11999: LD_VAR 0 2
12003: PUSH
12004: LD_VAR 0 5
12008: ARRAY
12009: PPUSH
12010: LD_VAR 0 4
12014: PUSH
12015: LD_INT 1
12017: ARRAY
12018: PPUSH
12019: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
12023: LD_VAR 0 2
12027: PUSH
12028: LD_VAR 0 5
12032: ARRAY
12033: PPUSH
12034: CALL_OW 256
12038: PUSH
12039: LD_INT 800
12041: LESS
12042: IFFALSE 12077
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
12044: LD_VAR 0 3
12048: PUSH
12049: LD_INT 1
12051: ARRAY
12052: PPUSH
12053: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , RuHealZone ) ;
12057: LD_VAR 0 2
12061: PUSH
12062: LD_VAR 0 5
12066: ARRAY
12067: PPUSH
12068: LD_INT 1
12070: PPUSH
12071: CALL_OW 113
// end else
12075: GO 12095
// ComEnterUnit ( scientist_list [ 1 ] , rulab ) ;
12077: LD_VAR 0 3
12081: PUSH
12082: LD_INT 1
12084: ARRAY
12085: PPUSH
12086: LD_EXP 46
12090: PPUSH
12091: CALL_OW 120
// end ;
12095: GO 11981
12097: POP
12098: POP
// end ; for i = 1 to enginer_list do
12099: LD_ADDR_VAR 0 5
12103: PUSH
12104: DOUBLE
12105: LD_INT 1
12107: DEC
12108: ST_TO_ADDR
12109: LD_VAR 0 2
12113: PUSH
12114: FOR_TO
12115: IFFALSE 12276
// begin wait ( 0 0$3 ) ;
12117: LD_INT 105
12119: PPUSH
12120: CALL_OW 67
// if buildings = 0 and DestroyRepairRU = 0 then
12124: LD_VAR 0 4
12128: PUSH
12129: LD_INT 0
12131: EQUAL
12132: PUSH
12133: LD_EXP 65
12137: PUSH
12138: LD_INT 0
12140: EQUAL
12141: AND
12142: IFFALSE 12166
// begin ComEnterUnit ( enginer_list [ i ] , rudepo ) ;
12144: LD_VAR 0 2
12148: PUSH
12149: LD_VAR 0 5
12153: ARRAY
12154: PPUSH
12155: LD_EXP 45
12159: PPUSH
12160: CALL_OW 120
// end else
12164: GO 12181
// begin ComExitBuilding ( enginer_list [ i ] ) ;
12166: LD_VAR 0 2
12170: PUSH
12171: LD_VAR 0 5
12175: ARRAY
12176: PPUSH
12177: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
12181: LD_VAR 0 2
12185: PUSH
12186: LD_VAR 0 5
12190: ARRAY
12191: PPUSH
12192: CALL_OW 256
12196: PUSH
12197: LD_INT 1000
12199: LESS
12200: IFFALSE 12235
// begin ComMoveToArea ( enginer_List [ i ] , RuHealZone ) ;
12202: LD_VAR 0 2
12206: PUSH
12207: LD_VAR 0 5
12211: ARRAY
12212: PPUSH
12213: LD_INT 1
12215: PPUSH
12216: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
12220: LD_VAR 0 3
12224: PUSH
12225: LD_INT 1
12227: ARRAY
12228: PPUSH
12229: CALL_OW 122
// end else
12233: GO 12274
// if GetLives ( enginer_list [ i ] ) = 1000 then
12235: LD_VAR 0 2
12239: PUSH
12240: LD_VAR 0 5
12244: ARRAY
12245: PPUSH
12246: CALL_OW 256
12250: PUSH
12251: LD_INT 1000
12253: EQUAL
12254: IFFALSE 12274
// begin ComEnterUnit ( scientist_list [ 1 ] , rulab ) ;
12256: LD_VAR 0 3
12260: PUSH
12261: LD_INT 1
12263: ARRAY
12264: PPUSH
12265: LD_EXP 46
12269: PPUSH
12270: CALL_OW 120
// end ; end ;
12274: GO 12114
12276: POP
12277: POP
// end ;
12278: LD_VAR 0 1
12282: RET
// every 0 0$1 trigger RussianAI = 1 do var i , l ;
12283: LD_EXP 23
12287: PUSH
12288: LD_INT 1
12290: EQUAL
12291: IFFALSE 12368
12293: GO 12295
12295: DISABLE
12296: LD_INT 0
12298: PPUSH
12299: PPUSH
// begin enable ;
12300: ENABLE
// for i in FilterUnitsInArea ( RussianBase , [ [ f_class , 1 ] , [ f_side , cpu1 ] ] ) do
12301: LD_ADDR_VAR 0 1
12305: PUSH
12306: LD_INT 5
12308: PPUSH
12309: LD_INT 25
12311: PUSH
12312: LD_INT 1
12314: PUSH
12315: EMPTY
12316: LIST
12317: LIST
12318: PUSH
12319: LD_INT 22
12321: PUSH
12322: LD_EXP 60
12326: PUSH
12327: EMPTY
12328: LIST
12329: LIST
12330: PUSH
12331: EMPTY
12332: LIST
12333: LIST
12334: PPUSH
12335: CALL_OW 70
12339: PUSH
12340: FOR_IN
12341: IFFALSE 12366
// begin wait ( 0 0$2 ) ;
12343: LD_INT 70
12345: PPUSH
12346: CALL_OW 67
// ComEnterUnit ( i , ruarmoury ) ;
12350: LD_VAR 0 1
12354: PPUSH
12355: LD_EXP 48
12359: PPUSH
12360: CALL_OW 120
// end ;
12364: GO 12340
12366: POP
12367: POP
// end ;
12368: PPOPN 2
12370: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 0 do
12371: LD_INT 22
12373: PUSH
12374: LD_EXP 60
12378: PUSH
12379: EMPTY
12380: LIST
12381: LIST
12382: PUSH
12383: LD_INT 21
12385: PUSH
12386: LD_INT 2
12388: PUSH
12389: EMPTY
12390: LIST
12391: LIST
12392: PUSH
12393: EMPTY
12394: LIST
12395: LIST
12396: PPUSH
12397: CALL_OW 69
12401: PUSH
12402: LD_INT 0
12404: EQUAL
12405: IFFALSE 12516
12407: GO 12409
12409: DISABLE
// begin enable ;
12410: ENABLE
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12411: LD_EXP 47
12415: PPUSH
12416: LD_INT 23
12418: PPUSH
12419: LD_INT 1
12421: PPUSH
12422: LD_INT 1
12424: PPUSH
12425: LD_INT 44
12427: PPUSH
12428: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12432: LD_EXP 47
12436: PPUSH
12437: LD_INT 23
12439: PPUSH
12440: LD_INT 1
12442: PPUSH
12443: LD_INT 1
12445: PPUSH
12446: LD_INT 44
12448: PPUSH
12449: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 43 ) ;
12453: LD_EXP 47
12457: PPUSH
12458: LD_INT 23
12460: PPUSH
12461: LD_INT 1
12463: PPUSH
12464: LD_INT 1
12466: PPUSH
12467: LD_INT 43
12469: PPUSH
12470: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 43 ) ;
12474: LD_EXP 47
12478: PPUSH
12479: LD_INT 23
12481: PPUSH
12482: LD_INT 1
12484: PPUSH
12485: LD_INT 1
12487: PPUSH
12488: LD_INT 43
12490: PPUSH
12491: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 46 ) ;
12495: LD_EXP 47
12499: PPUSH
12500: LD_INT 23
12502: PPUSH
12503: LD_INT 1
12505: PPUSH
12506: LD_INT 1
12508: PPUSH
12509: LD_INT 46
12511: PPUSH
12512: CALL_OW 185
// end ;
12516: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 1 do
12517: LD_INT 22
12519: PUSH
12520: LD_EXP 60
12524: PUSH
12525: EMPTY
12526: LIST
12527: LIST
12528: PUSH
12529: LD_INT 21
12531: PUSH
12532: LD_INT 2
12534: PUSH
12535: EMPTY
12536: LIST
12537: LIST
12538: PUSH
12539: EMPTY
12540: LIST
12541: LIST
12542: PPUSH
12543: CALL_OW 69
12547: PUSH
12548: LD_INT 1
12550: EQUAL
12551: IFFALSE 12641
12553: GO 12555
12555: DISABLE
// begin enable ;
12556: ENABLE
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12557: LD_EXP 47
12561: PPUSH
12562: LD_INT 23
12564: PPUSH
12565: LD_INT 1
12567: PPUSH
12568: LD_INT 1
12570: PPUSH
12571: LD_INT 44
12573: PPUSH
12574: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12578: LD_EXP 47
12582: PPUSH
12583: LD_INT 23
12585: PPUSH
12586: LD_INT 1
12588: PPUSH
12589: LD_INT 1
12591: PPUSH
12592: LD_INT 44
12594: PPUSH
12595: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 43 ) ;
12599: LD_EXP 47
12603: PPUSH
12604: LD_INT 23
12606: PPUSH
12607: LD_INT 1
12609: PPUSH
12610: LD_INT 1
12612: PPUSH
12613: LD_INT 43
12615: PPUSH
12616: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 43 ) ;
12620: LD_EXP 47
12624: PPUSH
12625: LD_INT 23
12627: PPUSH
12628: LD_INT 1
12630: PPUSH
12631: LD_INT 1
12633: PPUSH
12634: LD_INT 43
12636: PPUSH
12637: CALL_OW 185
// end ;
12641: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 2 do
12642: LD_INT 22
12644: PUSH
12645: LD_EXP 60
12649: PUSH
12650: EMPTY
12651: LIST
12652: LIST
12653: PUSH
12654: LD_INT 21
12656: PUSH
12657: LD_INT 2
12659: PUSH
12660: EMPTY
12661: LIST
12662: LIST
12663: PUSH
12664: EMPTY
12665: LIST
12666: LIST
12667: PPUSH
12668: CALL_OW 69
12672: PUSH
12673: LD_INT 2
12675: EQUAL
12676: IFFALSE 12745
12678: GO 12680
12680: DISABLE
// begin enable ;
12681: ENABLE
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12682: LD_EXP 47
12686: PPUSH
12687: LD_INT 23
12689: PPUSH
12690: LD_INT 1
12692: PPUSH
12693: LD_INT 1
12695: PPUSH
12696: LD_INT 44
12698: PPUSH
12699: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12703: LD_EXP 47
12707: PPUSH
12708: LD_INT 23
12710: PPUSH
12711: LD_INT 1
12713: PPUSH
12714: LD_INT 1
12716: PPUSH
12717: LD_INT 44
12719: PPUSH
12720: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 43 ) ;
12724: LD_EXP 47
12728: PPUSH
12729: LD_INT 23
12731: PPUSH
12732: LD_INT 1
12734: PPUSH
12735: LD_INT 1
12737: PPUSH
12738: LD_INT 43
12740: PPUSH
12741: CALL_OW 185
// end ;
12745: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 3 do
12746: LD_INT 22
12748: PUSH
12749: LD_EXP 60
12753: PUSH
12754: EMPTY
12755: LIST
12756: LIST
12757: PUSH
12758: LD_INT 21
12760: PUSH
12761: LD_INT 2
12763: PUSH
12764: EMPTY
12765: LIST
12766: LIST
12767: PUSH
12768: EMPTY
12769: LIST
12770: LIST
12771: PPUSH
12772: CALL_OW 69
12776: PUSH
12777: LD_INT 3
12779: EQUAL
12780: IFFALSE 12828
12782: GO 12784
12784: DISABLE
// begin enable ;
12785: ENABLE
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12786: LD_EXP 47
12790: PPUSH
12791: LD_INT 23
12793: PPUSH
12794: LD_INT 1
12796: PPUSH
12797: LD_INT 1
12799: PPUSH
12800: LD_INT 44
12802: PPUSH
12803: CALL_OW 185
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12807: LD_EXP 47
12811: PPUSH
12812: LD_INT 23
12814: PPUSH
12815: LD_INT 1
12817: PPUSH
12818: LD_INT 1
12820: PPUSH
12821: LD_INT 44
12823: PPUSH
12824: CALL_OW 185
// end ;
12828: END
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] ] ) = 4 do
12829: LD_INT 22
12831: PUSH
12832: LD_EXP 60
12836: PUSH
12837: EMPTY
12838: LIST
12839: LIST
12840: PUSH
12841: LD_INT 21
12843: PUSH
12844: LD_INT 2
12846: PUSH
12847: EMPTY
12848: LIST
12849: LIST
12850: PUSH
12851: EMPTY
12852: LIST
12853: LIST
12854: PPUSH
12855: CALL_OW 69
12859: PUSH
12860: LD_INT 4
12862: EQUAL
12863: IFFALSE 12890
12865: GO 12867
12867: DISABLE
// begin enable ;
12868: ENABLE
// AddComConstruct ( rufab , 23 , 1 , 1 , 44 ) ;
12869: LD_EXP 47
12873: PPUSH
12874: LD_INT 23
12876: PPUSH
12877: LD_INT 1
12879: PPUSH
12880: LD_INT 1
12882: PPUSH
12883: LD_INT 44
12885: PPUSH
12886: CALL_OW 185
// end ;
12890: END
// every 1 1$0 trigger RussianAI = 1 and FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
12891: LD_EXP 23
12895: PUSH
12896: LD_INT 1
12898: EQUAL
12899: PUSH
12900: LD_INT 22
12902: PUSH
12903: LD_EXP 60
12907: PUSH
12908: EMPTY
12909: LIST
12910: LIST
12911: PUSH
12912: LD_INT 21
12914: PUSH
12915: LD_INT 2
12917: PUSH
12918: EMPTY
12919: LIST
12920: LIST
12921: PUSH
12922: LD_INT 24
12924: PUSH
12925: LD_INT 1000
12927: PUSH
12928: EMPTY
12929: LIST
12930: LIST
12931: PUSH
12932: EMPTY
12933: LIST
12934: LIST
12935: LIST
12936: PPUSH
12937: CALL_OW 69
12941: PUSH
12942: LD_INT 5
12944: GREATEREQUAL
12945: AND
12946: IFFALSE 13128
12948: GO 12950
12950: DISABLE
12951: LD_INT 0
12953: PPUSH
12954: PPUSH
// begin enable ;
12955: ENABLE
// Tactic = Rand ( 1 , 2 ) ;
12956: LD_ADDR_VAR 0 1
12960: PUSH
12961: LD_INT 1
12963: PPUSH
12964: LD_INT 2
12966: PPUSH
12967: CALL_OW 12
12971: ST_TO_ADDR
// for i in FilterAllUnits ( [ [ f_side , cpu1 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
12972: LD_ADDR_VAR 0 2
12976: PUSH
12977: LD_INT 22
12979: PUSH
12980: LD_EXP 60
12984: PUSH
12985: EMPTY
12986: LIST
12987: LIST
12988: PUSH
12989: LD_INT 21
12991: PUSH
12992: LD_INT 2
12994: PUSH
12995: EMPTY
12996: LIST
12997: LIST
12998: PUSH
12999: LD_INT 24
13001: PUSH
13002: LD_INT 1000
13004: PUSH
13005: EMPTY
13006: LIST
13007: LIST
13008: PUSH
13009: EMPTY
13010: LIST
13011: LIST
13012: LIST
13013: PPUSH
13014: CALL_OW 69
13018: PUSH
13019: FOR_IN
13020: IFFALSE 13126
// begin if Tactic = 1 then
13022: LD_VAR 0 1
13026: PUSH
13027: LD_INT 1
13029: EQUAL
13030: IFFALSE 13124
// begin if Tactic = 1 then
13032: LD_VAR 0 1
13036: PUSH
13037: LD_INT 1
13039: EQUAL
13040: IFFALSE 13078
// begin AddComAgressiveMove ( [ i ] , 46 , 9 ) ;
13042: LD_VAR 0 2
13046: PUSH
13047: EMPTY
13048: LIST
13049: PPUSH
13050: LD_INT 46
13052: PPUSH
13053: LD_INT 9
13055: PPUSH
13056: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 34 , 43 ) ;
13060: LD_VAR 0 2
13064: PUSH
13065: EMPTY
13066: LIST
13067: PPUSH
13068: LD_INT 34
13070: PPUSH
13071: LD_INT 43
13073: PPUSH
13074: CALL_OW 174
// end ; if Tactic = 2 then
13078: LD_VAR 0 1
13082: PUSH
13083: LD_INT 2
13085: EQUAL
13086: IFFALSE 13124
// begin AddComAgressiveMove ( [ i ] , 34 , 43 ) ;
13088: LD_VAR 0 2
13092: PUSH
13093: EMPTY
13094: LIST
13095: PPUSH
13096: LD_INT 34
13098: PPUSH
13099: LD_INT 43
13101: PPUSH
13102: CALL_OW 174
// AddComAgressiveMove ( [ i ] , 46 , 9 ) ;
13106: LD_VAR 0 2
13110: PUSH
13111: EMPTY
13112: LIST
13113: PPUSH
13114: LD_INT 46
13116: PPUSH
13117: LD_INT 9
13119: PPUSH
13120: CALL_OW 174
// end ; end ; end ;
13124: GO 13019
13126: POP
13127: POP
// end ; end_of_file
13128: PPOPN 2
13130: END
// function apeman_init ; begin
13131: LD_INT 0
13133: PPUSH
// uc_side := 0 ;
13134: LD_ADDR_OWVAR 20
13138: PUSH
13139: LD_INT 0
13141: ST_TO_ADDR
// uc_nation := nation_nature ;
13142: LD_ADDR_OWVAR 21
13146: PUSH
13147: LD_INT 0
13149: ST_TO_ADDR
// hc_class := class_apeman ;
13150: LD_ADDR_OWVAR 28
13154: PUSH
13155: LD_INT 12
13157: ST_TO_ADDR
// hc_basic_skills := [ 1 , 1 , 1 , 1 ] ;
13158: LD_ADDR_OWVAR 30
13162: PUSH
13163: LD_INT 1
13165: PUSH
13166: LD_INT 1
13168: PUSH
13169: LD_INT 1
13171: PUSH
13172: LD_INT 1
13174: PUSH
13175: EMPTY
13176: LIST
13177: LIST
13178: LIST
13179: LIST
13180: ST_TO_ADDR
// hc_skills := [ 1 , 1 , 1 , 1 ] ;
13181: LD_ADDR_OWVAR 31
13185: PUSH
13186: LD_INT 1
13188: PUSH
13189: LD_INT 1
13191: PUSH
13192: LD_INT 1
13194: PUSH
13195: LD_INT 1
13197: PUSH
13198: EMPTY
13199: LIST
13200: LIST
13201: LIST
13202: LIST
13203: ST_TO_ADDR
// hc_attr := [ 10 , 12 ] ;
13204: LD_ADDR_OWVAR 29
13208: PUSH
13209: LD_INT 10
13211: PUSH
13212: LD_INT 12
13214: PUSH
13215: EMPTY
13216: LIST
13217: LIST
13218: ST_TO_ADDR
// hc_sex := sex_male ;
13219: LD_ADDR_OWVAR 27
13223: PUSH
13224: LD_INT 1
13226: ST_TO_ADDR
// hc_importance := 0 ;
13227: LD_ADDR_OWVAR 32
13231: PUSH
13232: LD_INT 0
13234: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
13235: LD_ADDR_OWVAR 35
13239: PUSH
13240: LD_INT 20
13242: NEG
13243: PPUSH
13244: LD_INT 20
13246: PPUSH
13247: CALL_OW 12
13251: ST_TO_ADDR
// end ;
13252: LD_VAR 0 1
13256: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
13257: LD_INT 0
13259: PPUSH
13260: PPUSH
13261: PPUSH
13262: PPUSH
13263: PPUSH
13264: PPUSH
13265: PPUSH
13266: PPUSH
// if not amount_of_apemen then
13267: LD_EXP 17
13271: NOT
13272: IFFALSE 13276
// exit ;
13274: GO 13391
// ape := 0 ;
13276: LD_ADDR_VAR 0 5
13280: PUSH
13281: LD_INT 0
13283: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
13284: LD_VAR 0 5
13288: PUSH
13289: LD_INT 1
13291: PLUS
13292: PUSH
13293: LD_INT 350
13295: PPUSH
13296: LD_INT 2100
13298: PPUSH
13299: CALL_OW 12
13303: MUL
13304: PPUSH
13305: CALL_OW 67
// apeman_init ;
13309: CALL 13131 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
13313: CALL_OW 44
13317: PPUSH
13318: LD_INT 9
13320: PPUSH
13321: LD_INT 0
13323: PPUSH
13324: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
13328: CALL_OW 44
13332: PPUSH
13333: LD_INT 8
13335: PPUSH
13336: LD_INT 0
13338: PPUSH
13339: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base3ApeArea , false ) ;
13343: CALL_OW 44
13347: PPUSH
13348: LD_INT 7
13350: PPUSH
13351: LD_INT 0
13353: PPUSH
13354: CALL_OW 49
// Wait ( 3 ) ;
13358: LD_INT 3
13360: PPUSH
13361: CALL_OW 67
// ape := ape + 1 ;
13365: LD_ADDR_VAR 0 5
13369: PUSH
13370: LD_VAR 0 5
13374: PUSH
13375: LD_INT 1
13377: PLUS
13378: ST_TO_ADDR
// until ape >= amount_of_apemen ;
13379: LD_VAR 0 5
13383: PUSH
13384: LD_EXP 17
13388: GREATEREQUAL
13389: IFFALSE 13284
// end ;
13391: LD_VAR 0 1
13395: RET
// every 0 0$15 do
13396: GO 13398
13398: DISABLE
// begin prepare_apemen ;
13399: CALL 13257 0 0
// end ; end_of_file
13403: END
// every 0 0$3 trigger GammaAI = 1 do
13404: LD_EXP 21
13408: PUSH
13409: LD_INT 1
13411: EQUAL
13412: IFFALSE 13429
13414: GO 13416
13416: DISABLE
// begin wait ( 0 0$1 ) ;
13417: LD_INT 35
13419: PPUSH
13420: CALL_OW 67
// enable ;
13424: ENABLE
// RepairBuildingGamma ;
13425: CALL 13456 0 0
// end ;
13429: END
// every 0 0$3 trigger SouthAMAI = 1 do
13430: LD_EXP 22
13434: PUSH
13435: LD_INT 1
13437: EQUAL
13438: IFFALSE 13455
13440: GO 13442
13442: DISABLE
// begin wait ( 0 0$1 ) ;
13443: LD_INT 35
13445: PPUSH
13446: CALL_OW 67
// enable ;
13450: ENABLE
// RepairBuildingSouth ;
13451: CALL 14214 0 0
// end ;
13455: END
// export DestroyRepairAM1 ; export function RepairBuildingGamma ; var enginer_list , scientist_list , buildings , i , un ; begin
13456: LD_INT 0
13458: PPUSH
13459: PPUSH
13460: PPUSH
13461: PPUSH
13462: PPUSH
13463: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 2 ] ] ) ;
13464: LD_ADDR_VAR 0 2
13468: PUSH
13469: LD_INT 22
13471: PUSH
13472: LD_EXP 62
13476: PUSH
13477: EMPTY
13478: LIST
13479: LIST
13480: PUSH
13481: LD_INT 25
13483: PUSH
13484: LD_INT 2
13486: PUSH
13487: EMPTY
13488: LIST
13489: LIST
13490: PUSH
13491: EMPTY
13492: LIST
13493: LIST
13494: PPUSH
13495: CALL_OW 69
13499: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_class , 4 ] ] ) ;
13500: LD_ADDR_VAR 0 3
13504: PUSH
13505: LD_INT 22
13507: PUSH
13508: LD_EXP 62
13512: PUSH
13513: EMPTY
13514: LIST
13515: LIST
13516: PUSH
13517: LD_INT 25
13519: PUSH
13520: LD_INT 4
13522: PUSH
13523: EMPTY
13524: LIST
13525: LIST
13526: PUSH
13527: EMPTY
13528: LIST
13529: LIST
13530: PPUSH
13531: CALL_OW 69
13535: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu3 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
13536: LD_ADDR_VAR 0 4
13540: PUSH
13541: LD_INT 22
13543: PUSH
13544: LD_EXP 62
13548: PUSH
13549: EMPTY
13550: LIST
13551: LIST
13552: PUSH
13553: LD_INT 21
13555: PUSH
13556: LD_INT 3
13558: PUSH
13559: EMPTY
13560: LIST
13561: LIST
13562: PUSH
13563: LD_INT 3
13565: PUSH
13566: LD_INT 24
13568: PUSH
13569: LD_INT 1000
13571: PUSH
13572: EMPTY
13573: LIST
13574: LIST
13575: PUSH
13576: EMPTY
13577: LIST
13578: LIST
13579: PUSH
13580: EMPTY
13581: LIST
13582: LIST
13583: LIST
13584: PUSH
13585: EMPTY
13586: LIST
13587: PPUSH
13588: CALL_OW 69
13592: ST_TO_ADDR
// DestroyRepairAM1 = 0 ;
13593: LD_ADDR_EXP 66
13597: PUSH
13598: LD_INT 0
13600: ST_TO_ADDR
// if buildings > 0 then
13601: LD_VAR 0 4
13605: PUSH
13606: LD_INT 0
13608: GREATER
13609: IFFALSE 13744
// begin for i = 1 to enginer_list do
13611: LD_ADDR_VAR 0 5
13615: PUSH
13616: DOUBLE
13617: LD_INT 1
13619: DEC
13620: ST_TO_ADDR
13621: LD_VAR 0 2
13625: PUSH
13626: FOR_TO
13627: IFFALSE 13742
// begin ComExitBuilding ( enginer_list [ i ] ) ;
13629: LD_VAR 0 2
13633: PUSH
13634: LD_VAR 0 5
13638: ARRAY
13639: PPUSH
13640: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
13644: LD_VAR 0 2
13648: PUSH
13649: LD_VAR 0 5
13653: ARRAY
13654: PPUSH
13655: LD_VAR 0 4
13659: PUSH
13660: LD_INT 1
13662: ARRAY
13663: PPUSH
13664: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
13668: LD_VAR 0 2
13672: PUSH
13673: LD_VAR 0 5
13677: ARRAY
13678: PPUSH
13679: CALL_OW 256
13683: PUSH
13684: LD_INT 800
13686: LESS
13687: IFFALSE 13722
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
13689: LD_VAR 0 3
13693: PUSH
13694: LD_INT 1
13696: ARRAY
13697: PPUSH
13698: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Am1HealZone ) ;
13702: LD_VAR 0 2
13706: PUSH
13707: LD_VAR 0 5
13711: ARRAY
13712: PPUSH
13713: LD_INT 10
13715: PPUSH
13716: CALL_OW 113
// end else
13720: GO 13740
// ComEnterUnit ( scientist_list [ 1 ] , am2lab ) ;
13722: LD_VAR 0 3
13726: PUSH
13727: LD_INT 1
13729: ARRAY
13730: PPUSH
13731: LD_EXP 54
13735: PPUSH
13736: CALL_OW 120
// end ;
13740: GO 13626
13742: POP
13743: POP
// end ; for i = 1 to enginer_list do
13744: LD_ADDR_VAR 0 5
13748: PUSH
13749: DOUBLE
13750: LD_INT 1
13752: DEC
13753: ST_TO_ADDR
13754: LD_VAR 0 2
13758: PUSH
13759: FOR_TO
13760: IFFALSE 13921
// begin wait ( 0 0$3 ) ;
13762: LD_INT 105
13764: PPUSH
13765: CALL_OW 67
// if buildings = 0 and DestroyRepairAM1 = 0 then
13769: LD_VAR 0 4
13773: PUSH
13774: LD_INT 0
13776: EQUAL
13777: PUSH
13778: LD_EXP 66
13782: PUSH
13783: LD_INT 0
13785: EQUAL
13786: AND
13787: IFFALSE 13811
// begin ComEnterUnit ( enginer_list [ i ] , am2depo ) ;
13789: LD_VAR 0 2
13793: PUSH
13794: LD_VAR 0 5
13798: ARRAY
13799: PPUSH
13800: LD_EXP 53
13804: PPUSH
13805: CALL_OW 120
// end else
13809: GO 13826
// begin ComExitBuilding ( enginer_list [ i ] ) ;
13811: LD_VAR 0 2
13815: PUSH
13816: LD_VAR 0 5
13820: ARRAY
13821: PPUSH
13822: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
13826: LD_VAR 0 2
13830: PUSH
13831: LD_VAR 0 5
13835: ARRAY
13836: PPUSH
13837: CALL_OW 256
13841: PUSH
13842: LD_INT 1000
13844: LESS
13845: IFFALSE 13880
// begin ComMoveToArea ( enginer_List [ i ] , Am1HealZone ) ;
13847: LD_VAR 0 2
13851: PUSH
13852: LD_VAR 0 5
13856: ARRAY
13857: PPUSH
13858: LD_INT 10
13860: PPUSH
13861: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
13865: LD_VAR 0 3
13869: PUSH
13870: LD_INT 1
13872: ARRAY
13873: PPUSH
13874: CALL_OW 122
// end else
13878: GO 13919
// if GetLives ( enginer_list [ i ] ) = 1000 then
13880: LD_VAR 0 2
13884: PUSH
13885: LD_VAR 0 5
13889: ARRAY
13890: PPUSH
13891: CALL_OW 256
13895: PUSH
13896: LD_INT 1000
13898: EQUAL
13899: IFFALSE 13919
// begin ComEnterUnit ( scientist_list [ 1 ] , Am2lab ) ;
13901: LD_VAR 0 3
13905: PUSH
13906: LD_INT 1
13908: ARRAY
13909: PPUSH
13910: LD_EXP 54
13914: PPUSH
13915: CALL_OW 120
// end ; end ;
13919: GO 13759
13921: POP
13922: POP
// end ;
13923: LD_VAR 0 1
13927: RET
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] ] ) = 0 do
13928: LD_INT 22
13930: PUSH
13931: LD_EXP 62
13935: PUSH
13936: EMPTY
13937: LIST
13938: LIST
13939: PUSH
13940: LD_INT 21
13942: PUSH
13943: LD_INT 2
13945: PUSH
13946: EMPTY
13947: LIST
13948: LIST
13949: PUSH
13950: EMPTY
13951: LIST
13952: LIST
13953: PPUSH
13954: CALL_OW 69
13958: PUSH
13959: LD_INT 0
13961: EQUAL
13962: IFFALSE 14073
13964: GO 13966
13966: DISABLE
// begin enable ;
13967: ENABLE
// AddComConstruct ( am2fab , 2 , 1 , 1 , 3 ) ;
13968: LD_EXP 55
13972: PPUSH
13973: LD_INT 2
13975: PPUSH
13976: LD_INT 1
13978: PPUSH
13979: LD_INT 1
13981: PPUSH
13982: LD_INT 3
13984: PPUSH
13985: CALL_OW 185
// AddComConstruct ( am2fab , 2 , 1 , 1 , 3 ) ;
13989: LD_EXP 55
13993: PPUSH
13994: LD_INT 2
13996: PPUSH
13997: LD_INT 1
13999: PPUSH
14000: LD_INT 1
14002: PPUSH
14003: LD_INT 3
14005: PPUSH
14006: CALL_OW 185
// AddComConstruct ( am2fab , 2 , 1 , 1 , 4 ) ;
14010: LD_EXP 55
14014: PPUSH
14015: LD_INT 2
14017: PPUSH
14018: LD_INT 1
14020: PPUSH
14021: LD_INT 1
14023: PPUSH
14024: LD_INT 4
14026: PPUSH
14027: CALL_OW 185
// AddComConstruct ( am2fab , 2 , 1 , 1 , 4 ) ;
14031: LD_EXP 55
14035: PPUSH
14036: LD_INT 2
14038: PPUSH
14039: LD_INT 1
14041: PPUSH
14042: LD_INT 1
14044: PPUSH
14045: LD_INT 4
14047: PPUSH
14048: CALL_OW 185
// AddComConstruct ( am2fab , 2 , 1 , 1 , 5 ) ;
14052: LD_EXP 55
14056: PPUSH
14057: LD_INT 2
14059: PPUSH
14060: LD_INT 1
14062: PPUSH
14063: LD_INT 1
14065: PPUSH
14066: LD_INT 5
14068: PPUSH
14069: CALL_OW 185
// end ;
14073: END
// every 1 1$0 trigger GammaAI = 1 and FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
14074: LD_EXP 21
14078: PUSH
14079: LD_INT 1
14081: EQUAL
14082: PUSH
14083: LD_INT 22
14085: PUSH
14086: LD_EXP 62
14090: PUSH
14091: EMPTY
14092: LIST
14093: LIST
14094: PUSH
14095: LD_INT 21
14097: PUSH
14098: LD_INT 2
14100: PUSH
14101: EMPTY
14102: LIST
14103: LIST
14104: PUSH
14105: LD_INT 24
14107: PUSH
14108: LD_INT 1000
14110: PUSH
14111: EMPTY
14112: LIST
14113: LIST
14114: PUSH
14115: EMPTY
14116: LIST
14117: LIST
14118: LIST
14119: PPUSH
14120: CALL_OW 69
14124: PUSH
14125: LD_INT 5
14127: GREATEREQUAL
14128: AND
14129: IFFALSE 14211
14131: GO 14133
14133: DISABLE
14134: LD_INT 0
14136: PPUSH
14137: PPUSH
// begin enable ;
14138: ENABLE
// for i in FilterAllUnits ( [ [ f_side , cpu3 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
14139: LD_ADDR_VAR 0 2
14143: PUSH
14144: LD_INT 22
14146: PUSH
14147: LD_EXP 62
14151: PUSH
14152: EMPTY
14153: LIST
14154: LIST
14155: PUSH
14156: LD_INT 21
14158: PUSH
14159: LD_INT 2
14161: PUSH
14162: EMPTY
14163: LIST
14164: LIST
14165: PUSH
14166: LD_INT 24
14168: PUSH
14169: LD_INT 1000
14171: PUSH
14172: EMPTY
14173: LIST
14174: LIST
14175: PUSH
14176: EMPTY
14177: LIST
14178: LIST
14179: LIST
14180: PPUSH
14181: CALL_OW 69
14185: PUSH
14186: FOR_IN
14187: IFFALSE 14209
// begin AddComAgressiveMove ( [ i ] , 87 , 86 ) ;
14189: LD_VAR 0 2
14193: PUSH
14194: EMPTY
14195: LIST
14196: PPUSH
14197: LD_INT 87
14199: PPUSH
14200: LD_INT 86
14202: PPUSH
14203: CALL_OW 174
// end ;
14207: GO 14186
14209: POP
14210: POP
// end ;
14211: PPOPN 2
14213: END
// export DestroyRepairAM2 ; export function RepairBuildingSouth ; var enginer_list , scientist_list , buildings , i , un ; begin
14214: LD_INT 0
14216: PPUSH
14217: PPUSH
14218: PPUSH
14219: PPUSH
14220: PPUSH
14221: PPUSH
// enginer_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 2 ] ] ) ;
14222: LD_ADDR_VAR 0 2
14226: PUSH
14227: LD_INT 22
14229: PUSH
14230: LD_EXP 63
14234: PUSH
14235: EMPTY
14236: LIST
14237: LIST
14238: PUSH
14239: LD_INT 25
14241: PUSH
14242: LD_INT 2
14244: PUSH
14245: EMPTY
14246: LIST
14247: LIST
14248: PUSH
14249: EMPTY
14250: LIST
14251: LIST
14252: PPUSH
14253: CALL_OW 69
14257: ST_TO_ADDR
// scientist_list := FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_class , 4 ] ] ) ;
14258: LD_ADDR_VAR 0 3
14262: PUSH
14263: LD_INT 22
14265: PUSH
14266: LD_EXP 63
14270: PUSH
14271: EMPTY
14272: LIST
14273: LIST
14274: PUSH
14275: LD_INT 25
14277: PUSH
14278: LD_INT 4
14280: PUSH
14281: EMPTY
14282: LIST
14283: LIST
14284: PUSH
14285: EMPTY
14286: LIST
14287: LIST
14288: PPUSH
14289: CALL_OW 69
14293: ST_TO_ADDR
// buildings := FilterAllUnits ( [ [ [ f_side , cpu4 ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
14294: LD_ADDR_VAR 0 4
14298: PUSH
14299: LD_INT 22
14301: PUSH
14302: LD_EXP 63
14306: PUSH
14307: EMPTY
14308: LIST
14309: LIST
14310: PUSH
14311: LD_INT 21
14313: PUSH
14314: LD_INT 3
14316: PUSH
14317: EMPTY
14318: LIST
14319: LIST
14320: PUSH
14321: LD_INT 3
14323: PUSH
14324: LD_INT 24
14326: PUSH
14327: LD_INT 1000
14329: PUSH
14330: EMPTY
14331: LIST
14332: LIST
14333: PUSH
14334: EMPTY
14335: LIST
14336: LIST
14337: PUSH
14338: EMPTY
14339: LIST
14340: LIST
14341: LIST
14342: PUSH
14343: EMPTY
14344: LIST
14345: PPUSH
14346: CALL_OW 69
14350: ST_TO_ADDR
// DestroyRepairAM2 = 0 ;
14351: LD_ADDR_EXP 67
14355: PUSH
14356: LD_INT 0
14358: ST_TO_ADDR
// if buildings > 0 then
14359: LD_VAR 0 4
14363: PUSH
14364: LD_INT 0
14366: GREATER
14367: IFFALSE 14502
// begin for i = 1 to enginer_list do
14369: LD_ADDR_VAR 0 5
14373: PUSH
14374: DOUBLE
14375: LD_INT 1
14377: DEC
14378: ST_TO_ADDR
14379: LD_VAR 0 2
14383: PUSH
14384: FOR_TO
14385: IFFALSE 14500
// begin ComExitBuilding ( enginer_list [ i ] ) ;
14387: LD_VAR 0 2
14391: PUSH
14392: LD_VAR 0 5
14396: ARRAY
14397: PPUSH
14398: CALL_OW 122
// AddComRepairBuilding ( enginer_list [ i ] , buildings [ 1 ] ) ;
14402: LD_VAR 0 2
14406: PUSH
14407: LD_VAR 0 5
14411: ARRAY
14412: PPUSH
14413: LD_VAR 0 4
14417: PUSH
14418: LD_INT 1
14420: ARRAY
14421: PPUSH
14422: CALL_OW 190
// if GetLives ( enginer_list [ i ] ) < 800 then
14426: LD_VAR 0 2
14430: PUSH
14431: LD_VAR 0 5
14435: ARRAY
14436: PPUSH
14437: CALL_OW 256
14441: PUSH
14442: LD_INT 800
14444: LESS
14445: IFFALSE 14480
// begin ComExitBuilding ( scientist_list [ 1 ] ) ;
14447: LD_VAR 0 3
14451: PUSH
14452: LD_INT 1
14454: ARRAY
14455: PPUSH
14456: CALL_OW 122
// ComMoveToArea ( enginer_List [ i ] , Am2HealZone ) ;
14460: LD_VAR 0 2
14464: PUSH
14465: LD_VAR 0 5
14469: ARRAY
14470: PPUSH
14471: LD_INT 11
14473: PPUSH
14474: CALL_OW 113
// end else
14478: GO 14498
// ComEnterUnit ( scientist_list [ 1 ] , am1lab ) ;
14480: LD_VAR 0 3
14484: PUSH
14485: LD_INT 1
14487: ARRAY
14488: PPUSH
14489: LD_EXP 50
14493: PPUSH
14494: CALL_OW 120
// end ;
14498: GO 14384
14500: POP
14501: POP
// end ; for i = 1 to enginer_list do
14502: LD_ADDR_VAR 0 5
14506: PUSH
14507: DOUBLE
14508: LD_INT 1
14510: DEC
14511: ST_TO_ADDR
14512: LD_VAR 0 2
14516: PUSH
14517: FOR_TO
14518: IFFALSE 14679
// begin wait ( 0 0$3 ) ;
14520: LD_INT 105
14522: PPUSH
14523: CALL_OW 67
// if buildings = 0 and DestroyRepairAM2 = 0 then
14527: LD_VAR 0 4
14531: PUSH
14532: LD_INT 0
14534: EQUAL
14535: PUSH
14536: LD_EXP 67
14540: PUSH
14541: LD_INT 0
14543: EQUAL
14544: AND
14545: IFFALSE 14569
// begin ComEnterUnit ( enginer_list [ i ] , am1depo ) ;
14547: LD_VAR 0 2
14551: PUSH
14552: LD_VAR 0 5
14556: ARRAY
14557: PPUSH
14558: LD_EXP 49
14562: PPUSH
14563: CALL_OW 120
// end else
14567: GO 14584
// begin ComExitBuilding ( enginer_list [ i ] ) ;
14569: LD_VAR 0 2
14573: PUSH
14574: LD_VAR 0 5
14578: ARRAY
14579: PPUSH
14580: CALL_OW 122
// end ; if GetLives ( enginer_list [ i ] ) < 1000 then
14584: LD_VAR 0 2
14588: PUSH
14589: LD_VAR 0 5
14593: ARRAY
14594: PPUSH
14595: CALL_OW 256
14599: PUSH
14600: LD_INT 1000
14602: LESS
14603: IFFALSE 14638
// begin ComMoveToArea ( enginer_List [ i ] , Am2HealZone ) ;
14605: LD_VAR 0 2
14609: PUSH
14610: LD_VAR 0 5
14614: ARRAY
14615: PPUSH
14616: LD_INT 11
14618: PPUSH
14619: CALL_OW 113
// ComExitBuilding ( scientist_list [ 1 ] ) ;
14623: LD_VAR 0 3
14627: PUSH
14628: LD_INT 1
14630: ARRAY
14631: PPUSH
14632: CALL_OW 122
// end else
14636: GO 14677
// if GetLives ( enginer_list [ i ] ) = 1000 then
14638: LD_VAR 0 2
14642: PUSH
14643: LD_VAR 0 5
14647: ARRAY
14648: PPUSH
14649: CALL_OW 256
14653: PUSH
14654: LD_INT 1000
14656: EQUAL
14657: IFFALSE 14677
// begin ComEnterUnit ( scientist_list [ 1 ] , Am1lab ) ;
14659: LD_VAR 0 3
14663: PUSH
14664: LD_INT 1
14666: ARRAY
14667: PPUSH
14668: LD_EXP 50
14672: PPUSH
14673: CALL_OW 120
// end ; end ;
14677: GO 14517
14679: POP
14680: POP
// end ;
14681: LD_VAR 0 1
14685: RET
// every 0 0$5 trigger FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] ] ) = 0 do
14686: LD_INT 22
14688: PUSH
14689: LD_EXP 63
14693: PUSH
14694: EMPTY
14695: LIST
14696: LIST
14697: PUSH
14698: LD_INT 21
14700: PUSH
14701: LD_INT 2
14703: PUSH
14704: EMPTY
14705: LIST
14706: LIST
14707: PUSH
14708: EMPTY
14709: LIST
14710: LIST
14711: PPUSH
14712: CALL_OW 69
14716: PUSH
14717: LD_INT 0
14719: EQUAL
14720: IFFALSE 14831
14722: GO 14724
14724: DISABLE
// begin enable ;
14725: ENABLE
// AddComConstruct ( am1fab , 2 , 1 , 1 , 3 ) ;
14726: LD_EXP 51
14730: PPUSH
14731: LD_INT 2
14733: PPUSH
14734: LD_INT 1
14736: PPUSH
14737: LD_INT 1
14739: PPUSH
14740: LD_INT 3
14742: PPUSH
14743: CALL_OW 185
// AddComConstruct ( am1fab , 2 , 1 , 1 , 3 ) ;
14747: LD_EXP 51
14751: PPUSH
14752: LD_INT 2
14754: PPUSH
14755: LD_INT 1
14757: PPUSH
14758: LD_INT 1
14760: PPUSH
14761: LD_INT 3
14763: PPUSH
14764: CALL_OW 185
// AddComConstruct ( am1fab , 2 , 1 , 1 , 4 ) ;
14768: LD_EXP 51
14772: PPUSH
14773: LD_INT 2
14775: PPUSH
14776: LD_INT 1
14778: PPUSH
14779: LD_INT 1
14781: PPUSH
14782: LD_INT 4
14784: PPUSH
14785: CALL_OW 185
// AddComConstruct ( am1fab , 2 , 1 , 1 , 4 ) ;
14789: LD_EXP 51
14793: PPUSH
14794: LD_INT 2
14796: PPUSH
14797: LD_INT 1
14799: PPUSH
14800: LD_INT 1
14802: PPUSH
14803: LD_INT 4
14805: PPUSH
14806: CALL_OW 185
// AddComConstruct ( am1fab , 2 , 1 , 1 , 5 ) ;
14810: LD_EXP 51
14814: PPUSH
14815: LD_INT 2
14817: PPUSH
14818: LD_INT 1
14820: PPUSH
14821: LD_INT 1
14823: PPUSH
14824: LD_INT 5
14826: PPUSH
14827: CALL_OW 185
// end ;
14831: END
// every 1 1$0 trigger SouthAMAI = 1 and FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) >= 5 do var tactic , i ;
14832: LD_EXP 22
14836: PUSH
14837: LD_INT 1
14839: EQUAL
14840: PUSH
14841: LD_INT 22
14843: PUSH
14844: LD_EXP 63
14848: PUSH
14849: EMPTY
14850: LIST
14851: LIST
14852: PUSH
14853: LD_INT 21
14855: PUSH
14856: LD_INT 2
14858: PUSH
14859: EMPTY
14860: LIST
14861: LIST
14862: PUSH
14863: LD_INT 24
14865: PUSH
14866: LD_INT 1000
14868: PUSH
14869: EMPTY
14870: LIST
14871: LIST
14872: PUSH
14873: EMPTY
14874: LIST
14875: LIST
14876: LIST
14877: PPUSH
14878: CALL_OW 69
14882: PUSH
14883: LD_INT 5
14885: GREATEREQUAL
14886: AND
14887: IFFALSE 14969
14889: GO 14891
14891: DISABLE
14892: LD_INT 0
14894: PPUSH
14895: PPUSH
// begin enable ;
14896: ENABLE
// for i in FilterAllUnits ( [ [ f_side , cpu4 ] , [ f_type , unit_vehicle ] , [ f_lives , 1000 ] ] ) do
14897: LD_ADDR_VAR 0 2
14901: PUSH
14902: LD_INT 22
14904: PUSH
14905: LD_EXP 63
14909: PUSH
14910: EMPTY
14911: LIST
14912: LIST
14913: PUSH
14914: LD_INT 21
14916: PUSH
14917: LD_INT 2
14919: PUSH
14920: EMPTY
14921: LIST
14922: LIST
14923: PUSH
14924: LD_INT 24
14926: PUSH
14927: LD_INT 1000
14929: PUSH
14930: EMPTY
14931: LIST
14932: LIST
14933: PUSH
14934: EMPTY
14935: LIST
14936: LIST
14937: LIST
14938: PPUSH
14939: CALL_OW 69
14943: PUSH
14944: FOR_IN
14945: IFFALSE 14967
// begin AddComAgressiveMove ( [ i ] , 87 , 86 ) ;
14947: LD_VAR 0 2
14951: PUSH
14952: EMPTY
14953: LIST
14954: PPUSH
14955: LD_INT 87
14957: PPUSH
14958: LD_INT 86
14960: PPUSH
14961: CALL_OW 174
// end ;
14965: GO 14944
14967: POP
14968: POP
// end ; end_of_file
14969: PPOPN 2
14971: END
// every 0 0$3 do
14972: GO 14974
14974: DISABLE
// begin enable ;
14975: ENABLE
// InitHack ( 5 ) ;
14976: LD_INT 5
14978: PPUSH
14979: CALL 14995 0 1
// end ;
14983: END
// every 1 do
14984: GO 14986
14986: DISABLE
// begin InitHack ( 3 ) ;
14987: LD_INT 3
14989: PPUSH
14990: CALL 14995 0 1
// end ;
14994: END
// export vx_limit , vx_capture , vx_list , us_hack ; export function InitHack ( limit ) ; var i , tmp ; begin
14995: LD_INT 0
14997: PPUSH
14998: PPUSH
14999: PPUSH
// us_hack = 99 ;
15000: LD_ADDR_EXP 71
15004: PUSH
15005: LD_INT 99
15007: ST_TO_ADDR
// vx_list = [ ] ;
15008: LD_ADDR_EXP 70
15012: PUSH
15013: EMPTY
15014: ST_TO_ADDR
// vx_limit = limit ;
15015: LD_ADDR_EXP 68
15019: PUSH
15020: LD_VAR 0 1
15024: ST_TO_ADDR
// vx_capture = [ ] ;
15025: LD_ADDR_EXP 69
15029: PUSH
15030: EMPTY
15031: ST_TO_ADDR
// tmp := FilterAllUnits ( [ f_weapon , us_hack ] ) ;
15032: LD_ADDR_VAR 0 4
15036: PUSH
15037: LD_INT 34
15039: PUSH
15040: LD_EXP 71
15044: PUSH
15045: EMPTY
15046: LIST
15047: LIST
15048: PPUSH
15049: CALL_OW 69
15053: ST_TO_ADDR
// for i = 1 to tmp do
15054: LD_ADDR_VAR 0 3
15058: PUSH
15059: DOUBLE
15060: LD_INT 1
15062: DEC
15063: ST_TO_ADDR
15064: LD_VAR 0 4
15068: PUSH
15069: FOR_TO
15070: IFFALSE 15137
// begin vx_list := vx_list ^ [ [ tmp [ i ] , [ ] ] ] ;
15072: LD_ADDR_EXP 70
15076: PUSH
15077: LD_EXP 70
15081: PUSH
15082: LD_VAR 0 4
15086: PUSH
15087: LD_VAR 0 3
15091: ARRAY
15092: PUSH
15093: EMPTY
15094: PUSH
15095: EMPTY
15096: LIST
15097: LIST
15098: PUSH
15099: EMPTY
15100: LIST
15101: ADD
15102: ST_TO_ADDR
// vx_capture := vx_capture ^ [ [ tmp [ i ] , 0 ] ] ;
15103: LD_ADDR_EXP 69
15107: PUSH
15108: LD_EXP 69
15112: PUSH
15113: LD_VAR 0 4
15117: PUSH
15118: LD_VAR 0 3
15122: ARRAY
15123: PUSH
15124: LD_INT 0
15126: PUSH
15127: EMPTY
15128: LIST
15129: LIST
15130: PUSH
15131: EMPTY
15132: LIST
15133: ADD
15134: ST_TO_ADDR
// end ;
15135: GO 15069
15137: POP
15138: POP
// end ;
15139: LD_VAR 0 2
15143: RET
// export function AddVeh ( veh , e , s ) ; var i , tmp , tmp2 ; begin
15144: LD_INT 0
15146: PPUSH
15147: PPUSH
15148: PPUSH
15149: PPUSH
// for i = 1 to vx_list do
15150: LD_ADDR_VAR 0 5
15154: PUSH
15155: DOUBLE
15156: LD_INT 1
15158: DEC
15159: ST_TO_ADDR
15160: LD_EXP 70
15164: PUSH
15165: FOR_TO
15166: IFFALSE 15306
// if vx_list [ i ] [ 1 ] = veh then
15168: LD_EXP 70
15172: PUSH
15173: LD_VAR 0 5
15177: ARRAY
15178: PUSH
15179: LD_INT 1
15181: ARRAY
15182: PUSH
15183: LD_VAR 0 1
15187: EQUAL
15188: IFFALSE 15304
// begin tmp2 := Insert ( vx_list [ i ] [ 2 ] , vx_list [ i ] [ 2 ] + 1 , [ e , s ] ) ;
15190: LD_ADDR_VAR 0 7
15194: PUSH
15195: LD_EXP 70
15199: PUSH
15200: LD_VAR 0 5
15204: ARRAY
15205: PUSH
15206: LD_INT 2
15208: ARRAY
15209: PPUSH
15210: LD_EXP 70
15214: PUSH
15215: LD_VAR 0 5
15219: ARRAY
15220: PUSH
15221: LD_INT 2
15223: ARRAY
15224: PUSH
15225: LD_INT 1
15227: PLUS
15228: PPUSH
15229: LD_VAR 0 2
15233: PUSH
15234: LD_VAR 0 3
15238: PUSH
15239: EMPTY
15240: LIST
15241: LIST
15242: PPUSH
15243: CALL_OW 2
15247: ST_TO_ADDR
// tmp := Replace ( vx_list [ i ] , 2 , tmp2 ) ;
15248: LD_ADDR_VAR 0 6
15252: PUSH
15253: LD_EXP 70
15257: PUSH
15258: LD_VAR 0 5
15262: ARRAY
15263: PPUSH
15264: LD_INT 2
15266: PPUSH
15267: LD_VAR 0 7
15271: PPUSH
15272: CALL_OW 1
15276: ST_TO_ADDR
// vx_list := Replace ( vx_list , i , tmp ) ;
15277: LD_ADDR_EXP 70
15281: PUSH
15282: LD_EXP 70
15286: PPUSH
15287: LD_VAR 0 5
15291: PPUSH
15292: LD_VAR 0 6
15296: PPUSH
15297: CALL_OW 1
15301: ST_TO_ADDR
// break ;
15302: GO 15306
// end ;
15304: GO 15165
15306: POP
15307: POP
// end ;
15308: LD_VAR 0 4
15312: RET
// export function ChangeCapture ( veh , m ) ; var i , tmp ; begin
15313: LD_INT 0
15315: PPUSH
15316: PPUSH
15317: PPUSH
// for i = 1 to vx_capture do
15318: LD_ADDR_VAR 0 4
15322: PUSH
15323: DOUBLE
15324: LD_INT 1
15326: DEC
15327: ST_TO_ADDR
15328: LD_EXP 69
15332: PUSH
15333: FOR_TO
15334: IFFALSE 15432
// if vx_capture [ i ] [ 1 ] = veh then
15336: LD_EXP 69
15340: PUSH
15341: LD_VAR 0 4
15345: ARRAY
15346: PUSH
15347: LD_INT 1
15349: ARRAY
15350: PUSH
15351: LD_VAR 0 1
15355: EQUAL
15356: IFFALSE 15430
// begin tmp := Replace ( vx_capture [ i ] , 2 , vx_capture [ i ] [ 2 ] + ( m ) ) ;
15358: LD_ADDR_VAR 0 5
15362: PUSH
15363: LD_EXP 69
15367: PUSH
15368: LD_VAR 0 4
15372: ARRAY
15373: PPUSH
15374: LD_INT 2
15376: PPUSH
15377: LD_EXP 69
15381: PUSH
15382: LD_VAR 0 4
15386: ARRAY
15387: PUSH
15388: LD_INT 2
15390: ARRAY
15391: PUSH
15392: LD_VAR 0 2
15396: PLUS
15397: PPUSH
15398: CALL_OW 1
15402: ST_TO_ADDR
// vx_capture := Replace ( vx_capture , i , tmp ) ;
15403: LD_ADDR_EXP 69
15407: PUSH
15408: LD_EXP 69
15412: PPUSH
15413: LD_VAR 0 4
15417: PPUSH
15418: LD_VAR 0 5
15422: PPUSH
15423: CALL_OW 1
15427: ST_TO_ADDR
// break ;
15428: GO 15432
// end ;
15430: GO 15333
15432: POP
15433: POP
// end ;
15434: LD_VAR 0 3
15438: RET
// export function DisplayHacks ( veh ) ; var i , tmp ; begin
15439: LD_INT 0
15441: PPUSH
15442: PPUSH
15443: PPUSH
// result := false ;
15444: LD_ADDR_VAR 0 2
15448: PUSH
15449: LD_INT 0
15451: ST_TO_ADDR
// for i = 1 to vx_capture do
15452: LD_ADDR_VAR 0 3
15456: PUSH
15457: DOUBLE
15458: LD_INT 1
15460: DEC
15461: ST_TO_ADDR
15462: LD_EXP 69
15466: PUSH
15467: FOR_TO
15468: IFFALSE 15516
// if vx_capture [ i ] [ 1 ] = veh then
15470: LD_EXP 69
15474: PUSH
15475: LD_VAR 0 3
15479: ARRAY
15480: PUSH
15481: LD_INT 1
15483: ARRAY
15484: PUSH
15485: LD_VAR 0 1
15489: EQUAL
15490: IFFALSE 15514
// begin result := vx_capture [ i ] [ 2 ] ;
15492: LD_ADDR_VAR 0 2
15496: PUSH
15497: LD_EXP 69
15501: PUSH
15502: LD_VAR 0 3
15506: ARRAY
15507: PUSH
15508: LD_INT 2
15510: ARRAY
15511: ST_TO_ADDR
// break ;
15512: GO 15516
// end ;
15514: GO 15467
15516: POP
15517: POP
// SetUnitDisplayNumber ( veh , result ) ;
15518: LD_VAR 0 1
15522: PPUSH
15523: LD_VAR 0 2
15527: PPUSH
15528: CALL_OW 505
// end ;
15532: LD_VAR 0 2
15536: RET
// export function GetValue ( veh , m ) ; var i ; begin
15537: LD_INT 0
15539: PPUSH
15540: PPUSH
// result := false ;
15541: LD_ADDR_VAR 0 3
15545: PUSH
15546: LD_INT 0
15548: ST_TO_ADDR
// if not veh then
15549: LD_VAR 0 1
15553: NOT
15554: IFFALSE 15560
// exit else
15556: GO 15720
15558: GO 15720
// begin case m of list :
15560: LD_VAR 0 2
15564: PUSH
15565: LD_STRING list
15567: DOUBLE
15568: EQUAL
15569: IFTRUE 15573
15571: GO 15642
15573: POP
// begin for i = 1 to vx_list do
15574: LD_ADDR_VAR 0 4
15578: PUSH
15579: DOUBLE
15580: LD_INT 1
15582: DEC
15583: ST_TO_ADDR
15584: LD_EXP 70
15588: PUSH
15589: FOR_TO
15590: IFFALSE 15638
// if vx_list [ i ] [ 1 ] = veh then
15592: LD_EXP 70
15596: PUSH
15597: LD_VAR 0 4
15601: ARRAY
15602: PUSH
15603: LD_INT 1
15605: ARRAY
15606: PUSH
15607: LD_VAR 0 1
15611: EQUAL
15612: IFFALSE 15636
// begin result := vx_list [ i ] [ 2 ] ;
15614: LD_ADDR_VAR 0 3
15618: PUSH
15619: LD_EXP 70
15623: PUSH
15624: LD_VAR 0 4
15628: ARRAY
15629: PUSH
15630: LD_INT 2
15632: ARRAY
15633: ST_TO_ADDR
// break ;
15634: GO 15638
// end ;
15636: GO 15589
15638: POP
15639: POP
// end ; capt :
15640: GO 15720
15642: LD_STRING capt
15644: DOUBLE
15645: EQUAL
15646: IFTRUE 15650
15648: GO 15719
15650: POP
// begin for i = 1 to vx_capture do
15651: LD_ADDR_VAR 0 4
15655: PUSH
15656: DOUBLE
15657: LD_INT 1
15659: DEC
15660: ST_TO_ADDR
15661: LD_EXP 69
15665: PUSH
15666: FOR_TO
15667: IFFALSE 15715
// if vx_capture [ i ] [ 1 ] = veh then
15669: LD_EXP 69
15673: PUSH
15674: LD_VAR 0 4
15678: ARRAY
15679: PUSH
15680: LD_INT 1
15682: ARRAY
15683: PUSH
15684: LD_VAR 0 1
15688: EQUAL
15689: IFFALSE 15713
// begin result := vx_capture [ i ] [ 2 ] ;
15691: LD_ADDR_VAR 0 3
15695: PUSH
15696: LD_EXP 69
15700: PUSH
15701: LD_VAR 0 4
15705: ARRAY
15706: PUSH
15707: LD_INT 2
15709: ARRAY
15710: ST_TO_ADDR
// break ;
15711: GO 15715
// end ;
15713: GO 15666
15715: POP
15716: POP
// end ; end ;
15717: GO 15720
15719: POP
// end ; end ;
15720: LD_VAR 0 3
15724: RET
// every 0 0$01 do var i , j , e , vehx , old_side ;
15725: GO 15727
15727: DISABLE
15728: LD_INT 0
15730: PPUSH
15731: PPUSH
15732: PPUSH
15733: PPUSH
15734: PPUSH
// begin enable ;
15735: ENABLE
// vehx = FilterAllUnits ( [ f_weapon , us_hack ] ) ;
15736: LD_ADDR_VAR 0 4
15740: PUSH
15741: LD_INT 34
15743: PUSH
15744: LD_EXP 71
15748: PUSH
15749: EMPTY
15750: LIST
15751: LIST
15752: PPUSH
15753: CALL_OW 69
15757: ST_TO_ADDR
// for j = 1 to vehx do
15758: LD_ADDR_VAR 0 2
15762: PUSH
15763: DOUBLE
15764: LD_INT 1
15766: DEC
15767: ST_TO_ADDR
15768: LD_VAR 0 4
15772: PUSH
15773: FOR_TO
15774: IFFALSE 16039
// begin e = FilterAllUnits ( [ [ f_enemy , GetSide ( vehx [ j ] ) ] , [ f_control , control_computer ] , [ f_not , [ f_weapon , us_hack ] ] ] ) ;
15776: LD_ADDR_VAR 0 3
15780: PUSH
15781: LD_INT 81
15783: PUSH
15784: LD_VAR 0 4
15788: PUSH
15789: LD_VAR 0 2
15793: ARRAY
15794: PPUSH
15795: CALL_OW 255
15799: PUSH
15800: EMPTY
15801: LIST
15802: LIST
15803: PUSH
15804: LD_INT 33
15806: PUSH
15807: LD_INT 3
15809: PUSH
15810: EMPTY
15811: LIST
15812: LIST
15813: PUSH
15814: LD_INT 3
15816: PUSH
15817: LD_INT 34
15819: PUSH
15820: LD_EXP 71
15824: PUSH
15825: EMPTY
15826: LIST
15827: LIST
15828: PUSH
15829: EMPTY
15830: LIST
15831: LIST
15832: PUSH
15833: EMPTY
15834: LIST
15835: LIST
15836: LIST
15837: PPUSH
15838: CALL_OW 69
15842: ST_TO_ADDR
// if not e then
15843: LD_VAR 0 3
15847: NOT
15848: IFFALSE 15852
// continue ;
15850: GO 15773
// i := NearestUnitToUnit ( e , vehx [ j ] ) ;
15852: LD_ADDR_VAR 0 1
15856: PUSH
15857: LD_VAR 0 3
15861: PPUSH
15862: LD_VAR 0 4
15866: PUSH
15867: LD_VAR 0 2
15871: ARRAY
15872: PPUSH
15873: CALL_OW 74
15877: ST_TO_ADDR
// if GetDistUnits ( vehx [ j ] , i ) <= 12 and GetValue ( vehx [ j ] , capt ) < vx_limit then
15878: LD_VAR 0 4
15882: PUSH
15883: LD_VAR 0 2
15887: ARRAY
15888: PPUSH
15889: LD_VAR 0 1
15893: PPUSH
15894: CALL_OW 296
15898: PUSH
15899: LD_INT 12
15901: LESSEQUAL
15902: PUSH
15903: LD_VAR 0 4
15907: PUSH
15908: LD_VAR 0 2
15912: ARRAY
15913: PPUSH
15914: LD_STRING capt
15916: PPUSH
15917: CALL 15537 0 2
15921: PUSH
15922: LD_EXP 68
15926: LESS
15927: AND
15928: IFFALSE 16037
// begin ChangeCapture ( vehx [ j ] , 1 ) ;
15930: LD_VAR 0 4
15934: PUSH
15935: LD_VAR 0 2
15939: ARRAY
15940: PPUSH
15941: LD_INT 1
15943: PPUSH
15944: CALL 15313 0 2
// old_side = GetSide ( i ) ;
15948: LD_ADDR_VAR 0 5
15952: PUSH
15953: LD_VAR 0 1
15957: PPUSH
15958: CALL_OW 255
15962: ST_TO_ADDR
// SetSide ( i , GetSide ( vehx [ j ] ) ) ;
15963: LD_VAR 0 1
15967: PPUSH
15968: LD_VAR 0 4
15972: PUSH
15973: LD_VAR 0 2
15977: ARRAY
15978: PPUSH
15979: CALL_OW 255
15983: PPUSH
15984: CALL_OW 235
// ComStop ( i ) ;
15988: LD_VAR 0 1
15992: PPUSH
15993: CALL_OW 141
// DisplayHacks ( vehx [ j ] ) ;
15997: LD_VAR 0 4
16001: PUSH
16002: LD_VAR 0 2
16006: ARRAY
16007: PPUSH
16008: CALL 15439 0 1
// AddVeh ( vehx [ j ] , i , old_side ) ;
16012: LD_VAR 0 4
16016: PUSH
16017: LD_VAR 0 2
16021: ARRAY
16022: PPUSH
16023: LD_VAR 0 1
16027: PPUSH
16028: LD_VAR 0 5
16032: PPUSH
16033: CALL 15144 0 3
// end ; end ;
16037: GO 15773
16039: POP
16040: POP
// end ;
16041: PPOPN 5
16043: END
// on UnitDestroyed ( un ) do var i , j , tmp , t , t2 ;
16044: LD_INT 0
16046: PPUSH
16047: PPUSH
16048: PPUSH
16049: PPUSH
16050: PPUSH
// begin if un in FilterAllUnits ( [ f_weapon , us_hack ] ) then
16051: LD_VAR 0 1
16055: PUSH
16056: LD_INT 34
16058: PUSH
16059: LD_EXP 71
16063: PUSH
16064: EMPTY
16065: LIST
16066: LIST
16067: PPUSH
16068: CALL_OW 69
16072: IN
16073: IFFALSE 16256
// begin for i = 1 to vx_list do
16075: LD_ADDR_VAR 0 2
16079: PUSH
16080: DOUBLE
16081: LD_INT 1
16083: DEC
16084: ST_TO_ADDR
16085: LD_EXP 70
16089: PUSH
16090: FOR_TO
16091: IFFALSE 16254
// if un = vx_list [ i ] [ 1 ] then
16093: LD_VAR 0 1
16097: PUSH
16098: LD_EXP 70
16102: PUSH
16103: LD_VAR 0 2
16107: ARRAY
16108: PUSH
16109: LD_INT 1
16111: ARRAY
16112: EQUAL
16113: IFFALSE 16252
// begin for j = 1 to vx_list [ i ] [ 2 ] do
16115: LD_ADDR_VAR 0 3
16119: PUSH
16120: DOUBLE
16121: LD_INT 1
16123: DEC
16124: ST_TO_ADDR
16125: LD_EXP 70
16129: PUSH
16130: LD_VAR 0 2
16134: ARRAY
16135: PUSH
16136: LD_INT 2
16138: ARRAY
16139: PUSH
16140: FOR_TO
16141: IFFALSE 16228
// begin SetSide ( vx_list [ i ] [ 2 ] [ j ] [ 1 ] , vx_list [ i ] [ 2 ] [ j ] [ 2 ] ) ;
16143: LD_EXP 70
16147: PUSH
16148: LD_VAR 0 2
16152: ARRAY
16153: PUSH
16154: LD_INT 2
16156: ARRAY
16157: PUSH
16158: LD_VAR 0 3
16162: ARRAY
16163: PUSH
16164: LD_INT 1
16166: ARRAY
16167: PPUSH
16168: LD_EXP 70
16172: PUSH
16173: LD_VAR 0 2
16177: ARRAY
16178: PUSH
16179: LD_INT 2
16181: ARRAY
16182: PUSH
16183: LD_VAR 0 3
16187: ARRAY
16188: PUSH
16189: LD_INT 2
16191: ARRAY
16192: PPUSH
16193: CALL_OW 235
// ComStop ( vx_list [ i ] [ 2 ] [ j ] [ 1 ] ) ;
16197: LD_EXP 70
16201: PUSH
16202: LD_VAR 0 2
16206: ARRAY
16207: PUSH
16208: LD_INT 2
16210: ARRAY
16211: PUSH
16212: LD_VAR 0 3
16216: ARRAY
16217: PUSH
16218: LD_INT 1
16220: ARRAY
16221: PPUSH
16222: CALL_OW 141
// end ;
16226: GO 16140
16228: POP
16229: POP
// vx_list := Delete ( vx_list , i ) ;
16230: LD_ADDR_EXP 70
16234: PUSH
16235: LD_EXP 70
16239: PPUSH
16240: LD_VAR 0 2
16244: PPUSH
16245: CALL_OW 3
16249: ST_TO_ADDR
// break ;
16250: GO 16254
// end ;
16252: GO 16090
16254: POP
16255: POP
// end ; if un in FilterAllUnits ( [ f_control , control_computer ] ) and not un in FilterAllUnits ( [ f_weapon , us_hack ] ) then
16256: LD_VAR 0 1
16260: PUSH
16261: LD_INT 33
16263: PUSH
16264: LD_INT 3
16266: PUSH
16267: EMPTY
16268: LIST
16269: LIST
16270: PPUSH
16271: CALL_OW 69
16275: IN
16276: PUSH
16277: LD_VAR 0 1
16281: PUSH
16282: LD_INT 34
16284: PUSH
16285: LD_EXP 71
16289: PUSH
16290: EMPTY
16291: LIST
16292: LIST
16293: PPUSH
16294: CALL_OW 69
16298: IN
16299: NOT
16300: AND
16301: IFFALSE 16537
// begin if isEditor = 1 then
16303: LD_OWVAR 84
16307: PUSH
16308: LD_INT 1
16310: EQUAL
16311: IFFALSE 16323
// display_strings := un ;
16313: LD_ADDR_OWVAR 47
16317: PUSH
16318: LD_VAR 0 1
16322: ST_TO_ADDR
// for i = 1 to vx_list do
16323: LD_ADDR_VAR 0 2
16327: PUSH
16328: DOUBLE
16329: LD_INT 1
16331: DEC
16332: ST_TO_ADDR
16333: LD_EXP 70
16337: PUSH
16338: FOR_TO
16339: IFFALSE 16535
// begin for j = 1 to vx_list [ i ] [ 2 ] do
16341: LD_ADDR_VAR 0 3
16345: PUSH
16346: DOUBLE
16347: LD_INT 1
16349: DEC
16350: ST_TO_ADDR
16351: LD_EXP 70
16355: PUSH
16356: LD_VAR 0 2
16360: ARRAY
16361: PUSH
16362: LD_INT 2
16364: ARRAY
16365: PUSH
16366: FOR_TO
16367: IFFALSE 16531
// if un = vx_list [ i ] [ 2 ] [ j ] [ 1 ] then
16369: LD_VAR 0 1
16373: PUSH
16374: LD_EXP 70
16378: PUSH
16379: LD_VAR 0 2
16383: ARRAY
16384: PUSH
16385: LD_INT 2
16387: ARRAY
16388: PUSH
16389: LD_VAR 0 3
16393: ARRAY
16394: PUSH
16395: LD_INT 1
16397: ARRAY
16398: EQUAL
16399: IFFALSE 16529
// begin tmp := vx_list [ i ] [ 1 ] ;
16401: LD_ADDR_VAR 0 4
16405: PUSH
16406: LD_EXP 70
16410: PUSH
16411: LD_VAR 0 2
16415: ARRAY
16416: PUSH
16417: LD_INT 1
16419: ARRAY
16420: ST_TO_ADDR
// t := Delete ( vx_list [ i ] [ 2 ] , j ) ;
16421: LD_ADDR_VAR 0 5
16425: PUSH
16426: LD_EXP 70
16430: PUSH
16431: LD_VAR 0 2
16435: ARRAY
16436: PUSH
16437: LD_INT 2
16439: ARRAY
16440: PPUSH
16441: LD_VAR 0 3
16445: PPUSH
16446: CALL_OW 3
16450: ST_TO_ADDR
// t2 := Replace ( vx_list [ i ] , 2 , t ) ;
16451: LD_ADDR_VAR 0 6
16455: PUSH
16456: LD_EXP 70
16460: PUSH
16461: LD_VAR 0 2
16465: ARRAY
16466: PPUSH
16467: LD_INT 2
16469: PPUSH
16470: LD_VAR 0 5
16474: PPUSH
16475: CALL_OW 1
16479: ST_TO_ADDR
// vx_list := Replace ( vx_list , i , t2 ) ;
16480: LD_ADDR_EXP 70
16484: PUSH
16485: LD_EXP 70
16489: PPUSH
16490: LD_VAR 0 2
16494: PPUSH
16495: LD_VAR 0 6
16499: PPUSH
16500: CALL_OW 1
16504: ST_TO_ADDR
// ChangeCapture ( tmp , - 1 ) ;
16505: LD_VAR 0 4
16509: PPUSH
16510: LD_INT 1
16512: NEG
16513: PPUSH
16514: CALL 15313 0 2
// DisplayHacks ( tmp ) ;
16518: LD_VAR 0 4
16522: PPUSH
16523: CALL 15439 0 1
// break ;
16527: GO 16531
// end ;
16529: GO 16366
16531: POP
16532: POP
// end ;
16533: GO 16338
16535: POP
16536: POP
// end ; end ;
16537: PPOPN 6
16539: END
